GNU bug report logs - #75928
31.0.50; `dom-print' often fails to print an SVG DOM

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: David Ponce <da_vid@HIDDEN>; Keywords: patch; dated Wed, 29 Jan 2025 15:53:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 75928 <at> debbugs.gnu.org:


Received: (at 75928) by debbugs.gnu.org; 8 Feb 2025 12:55:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 08 07:55:29 2025
Received: from localhost ([127.0.0.1]:39074 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tgkMr-0004zU-4A
	for submit <at> debbugs.gnu.org; Sat, 08 Feb 2025 07:55:29 -0500
Received: from smtp-21.smtpout.orange.fr ([80.12.242.21]:38259
 helo=smtp.smtpout.orange.fr)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1tgkMn-0004zG-39
 for 75928 <at> debbugs.gnu.org; Sat, 08 Feb 2025 07:55:26 -0500
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
 id gkMftaLJW8ZoAgkMitILce; Sat, 08 Feb 2025 13:55:23 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
 s=t20230301; t=1739019323;
 bh=M/l2j10Lg84eNNZgA8QtqOoVVFwWZS+ULjFCiDwJOVQ=;
 h=Message-ID:Date:MIME-Version:Subject:To:From;
 b=aLoUlxM18M6wembdlzSFI9isaVDB1hsoNZNt4I+NxV3ePnpFKR1OVLIOGBXyLjd9S
 YqPfHW44P4QPmsykNdYbJm7WauxJ8tYZt0owy9bFD+/GTtL++YD/BYx6zr3aQd8oWc
 jREDMyPB9jYpkIJtluYe1v20oXKK8xqNh85CqmRlpMPmEkmuSDJhVliS8z44uSuPAC
 JviP5jz5cN6ao0XFT1ZXeT1O+coUtZBtfwetpqj9cZPyOkG2W+BRyvLWFKcmYdL04h
 qZbf8ofAeAtCqPw8pnp0mWdDXftaikZDbyomzYaNON6B3WPqlAIeqhkPLGINynyZpK
 vi7+7PTyzMKCg==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Sat, 08 Feb 2025 13:55:23 +0100
X-ME-IP: 90.112.40.65
Content-Type: multipart/mixed; boundary="------------DbNx3wQebTmUTMQ5XPySP6MO"
Message-ID: <9154b4d5-b581-4f6d-aa21-c0e46af22b05@HIDDEN>
Date: Sat, 8 Feb 2025 13:55:16 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75928: 31.0.50; `dom-print' often fails to print an SVG DOM
To: Eli Zaretskii <eliz@HIDDEN>
References: <ec2723d5-9f6c-4250-8ab8-50e6664c4565@HIDDEN>
 <76435a3b-75a8-42f4-b1cf-d7f054e11737@HIDDEN> <86o6zc3h9p.fsf@HIDDEN>
Content-Language: fr, en-US
From: David Ponce <da_vid@HIDDEN>
In-Reply-To: <86o6zc3h9p.fsf@HIDDEN>
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75928
Cc: 75928 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

This is a multi-part message in MIME format.
--------------DbNx3wQebTmUTMQ5XPySP6MO
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 2025-02-08 10:41, Eli Zaretskii wrote:
>> Date: Wed, 5 Feb 2025 13:01:04 +0100
>> From:  David Ponce via "Bug reports for GNU Emacs,
>>   the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
>>
>> I attached a new patch that also avoid printing attributes without a
>> value (value is nil in the DOM).
>>
>> I also refreshed the list of HTML boolean attributes from the current
>> standard, and put checking for a boolean attribute in a separate
>> inline function for clarity.
>>
>> The patch also slightly improve the code by computing the indentation
>> column outside of loop and delegating indentation to `indent-line-to'.
> 
> Thanks.
> 
> Using indent-line-to requires binding indent-tabs-mode to nil, to make
> sure we produce spaces and not TABs, right?
> 
> Also, please make sure the dom.el test suite still passes after this
> change, if you haven't already.  Bonus points for providing a new test
> for this feature.

Hello Eli,

Thank you very much for your feedback.

Please, find attached a new patch to force indent with spaces and to add
two new tests to dom-tests.el.

Here is the updated change log:

2025-02-08  David Ponce  <da_vid@HIDDEN>

	Fix DOM printing when an attribute value is not a string, which is
	often the case in SVG DOM.  Don't print attributes without a
	value.  Refresh the list of HTML boolean attributes.

	* lisp/dom.el (dom--html-boolean-attribute-p): New function.
	(dom-print): Use it.  Convert attribute value to string before to
	call `url-insert-entities-in-string'.  Don't print attribute
	without a value.  Compute indentation column outside of loop and
	call `indent-line-to' to indent line.

	* test/lisp/dom-tests.el (dom-tests-print-svg)
	(dom-tests-print-html-boolean): New tests.

All tests in dom-tests.el passed for me:

Running 28 tests (2025-02-08 13:45:37+0100, selector `(not (or (tag :unstable) (tag :nativecomp)))')
    passed   1/28  dom-test-search (0.000180 sec)
    passed   2/28  dom-tests-add-child-before (0.000199 sec)
    passed   3/28  dom-tests-append-child (0.000074 sec)
    passed   4/28  dom-tests-attr (0.000096 sec)
    passed   5/28  dom-tests-attributes (0.000054 sec)
    passed   6/28  dom-tests-by-class (0.000074 sec)
    passed   7/28  dom-tests-by-id (0.000091 sec)
    passed   8/28  dom-tests-by-style (0.000054 sec)
    passed   9/28  dom-tests-by-tag (0.000052 sec)
    passed  10/28  dom-tests-child-by-tag (0.000047 sec)
    passed  11/28  dom-tests-children (0.000066 sec)
    passed  12/28  dom-tests-elements (0.000057 sec)
    passed  13/28  dom-tests-ensure-node (0.000071 sec)
    passed  14/28  dom-tests-non-text-children (0.000057 sec)
    passed  15/28  dom-tests-parent (0.000052 sec)
    passed  16/28  dom-tests-pp (0.000102 sec)
    passed  17/28  dom-tests-previous-sibling (0.000049 sec)
    passed  18/28  dom-tests-print (0.009147 sec)
    passed  19/28  dom-tests-print-html-boolean (0.000200 sec)
    passed  20/28  dom-tests-print-svg (0.000166 sec)
    passed  21/28  dom-tests-remove-attribute (0.000083 sec)
    passed  22/28  dom-tests-remove-node (0.000088 sec)
    passed  23/28  dom-tests-set-attribute (0.000039 sec)
    passed  24/28  dom-tests-set-attributes (0.000074 sec)
    passed  25/28  dom-tests-strings (0.000077 sec)
    passed  26/28  dom-tests-tag (0.000087 sec)
    passed  27/28  dom-tests-text (0.000065 sec)
    passed  28/28  dom-tests-texts (0.000047 sec)

Ran 28 tests, 28 results as expected, 0 unexpected (2025-02-08 13:45:37+0100, 0.012721 sec)

--------------DbNx3wQebTmUTMQ5XPySP6MO
Content-Type: text/x-patch; charset=UTF-8; name="dom-patch-V2.patch"
Content-Disposition: attachment; filename="dom-patch-V2.patch"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL2xpc3AvZG9tLmVsIGIvbGlzcC9kb20uZWwKaW5kZXggZmMwMzIwNThl
OWYuLjRkOTA0YzkyZGU5IDEwMDY0NAotLS0gYS9saXNwL2RvbS5lbAorKysgYi9saXNwL2Rv
bS5lbApAQCAtMjU4LDMxICsyNTgsNDEgQEAgZG9tLXBwCiAJICAgICAgKGluc2VydCAiKSIp
CiAJICAgIChpbnNlcnQgIlxuIiAobWFrZS1zdHJpbmcgKDErIGNvbHVtbikgP1xzKSkpKSkp
KSkKIAorKGRlZmluZS1pbmxpbmUgZG9tLS1odG1sLWJvb2xlYW4tYXR0cmlidXRlLXAgKGF0
dHIpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBBVFRSIGlzIGFuIEhUTUwgYm9vbGVhbiBhdHRy
aWJ1dGUuIgorICAoaW5saW5lLXF1b3RlCisgICAobWVtcSAsYXR0cgorICAgICAgICAgOzsg
RXh0cmFjdGVkIGZyb20gdGhlIEhUTUwgTGl2aW5nIFN0YW5kYXJkIGxpc3Qgb2YgYXR0cmli
dXRlcworICAgICAgICAgOzsgYXQgPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2F0
dHJpYnV0ZXMtMz4uCisgICAgICAgICAnKCBhbGxvd2Z1bGxzY3JlZW4gYWxwaGEgYXN5bmMg
YXV0b2ZvY3VzIGF1dG9wbGF5IGNoZWNrZWQKKyAgICAgICAgICAgIGNvbnRyb2xzIGRlZmF1
bHQgZGVmZXIgZGlzYWJsZWQgZm9ybW5vdmFsaWRhdGUgaW5lcnQgaXNtYXAKKyAgICAgICAg
ICAgIGl0ZW1zY29wZSBsb29wIG11bHRpcGxlIG11dGVkIG5vbW9kdWxlIG5vdmFsaWRhdGUg
b3BlbgorICAgICAgICAgICAgcGxheXNpbmxpbmUgcmVhZG9ubHkgcmVxdWlyZWQgcmV2ZXJz
ZWQgc2VsZWN0ZWQKKyAgICAgICAgICAgIHNoYWRvd3Jvb3RjbG9uYWJsZSBzaGFkb3dyb290
ZGVsZWdhdGVzZm9jdXMKKyAgICAgICAgICAgIHNoYWRvd3Jvb3RzZXJpYWxpemFibGUpKSkp
CisKIChkZWZ1biBkb20tcHJpbnQgKGRvbSAmb3B0aW9uYWwgcHJldHR5IHhtbCkKICAgIlBy
aW50IERPTSBhdCBwb2ludCBhcyBIVE1ML1hNTC4KIElmIFBSRVRUWSwgaW5kZW50IHRoZSBI
VE1ML1hNTCBsb2dpY2FsbHkuCiBJZiBYTUwsIGdlbmVyYXRlIFhNTCBpbnN0ZWFkIG9mIEhU
TUwuIgotICAobGV0ICgoY29sdW1uIChjdXJyZW50LWNvbHVtbikpKQorICAobGV0ICgoY29s
dW1uIChjdXJyZW50LWNvbHVtbikpCisgICAgICAgIChpbmRlbnQtdGFicy1tb2RlIG5pbCkp
IDs7IEluZGVudCB3aXRoIHNwYWNlcwogICAgIChpbnNlcnQgKGZvcm1hdCAiPCVzIiAoZG9t
LXRhZyBkb20pKSkKLSAgICAobGV0ICgoYXR0ciAoZG9tLWF0dHJpYnV0ZXMgZG9tKSkpCi0g
ICAgICAoZG9saXN0IChlbGVtIGF0dHIpCi0JOzsgSW4gSFRNTCwgdGhlc2UgYXJlIGJvb2xl
YW4gYXR0cmlidXRlcyB0aGF0IHNob3VsZCBub3QgaGF2ZQotCTs7IGFuID0gdmFsdWUuCi0J
KGluc2VydCAoaWYgKGFuZCAobWVtcSAoY2FyIGVsZW0pCi0JCQkgICAgICAgJyhhc3luYyBh
dXRvZm9jdXMgYXV0b3BsYXkgY2hlY2tlZAotCQkJICAgICAgICAgY29udGVudGVkaXRhYmxl
IGNvbnRyb2xzIGRlZmF1bHQKLQkJCSAgICAgICAgIGRlZmVyIGRpc2FibGVkIGZvcm1Ob1Zh
bGlkYXRlIGZyYW1lYm9yZGVyCi0JCQkgICAgICAgICBoaWRkZW4gaXNtYXAgaXRlbXNjb3Bl
IGxvb3AKLQkJCSAgICAgICAgIG11bHRpcGxlIG11dGVkIG5vbW9kdWxlIG5vdmFsaWRhdGUg
b3BlbgotCQkJICAgICAgICAgcmVhZG9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQKLQkJCSAgICAg
ICAgIHNjb3BlZCBzZWxlY3RlZCB0eXBlbXVzdG1hdGNoKSkKLQkJCSAoY2RyIGVsZW0pCi0J
CQkgKG5vdCB4bWwpKQotCQkgICAgKGZvcm1hdCAiICVzIiAoY2FyIGVsZW0pKQotCQkgIChm
b3JtYXQgIiAlcz1cIiVzXCIiIChjYXIgZWxlbSkKLQkgICAgICAgICAgICAgICAgICAodXJs
LWluc2VydC1lbnRpdGllcy1pbi1zdHJpbmcgKGNkciBlbGVtKSkpKSkpKQorICAgIChwY2Fz
ZS1kb2xpc3QgKGAoLGF0dHIgLiAsdmFsdWUpIChkb20tYXR0cmlidXRlcyBkb20pKQorICAg
ICAgOzsgRG9uJ3QgcHJpbnQgYXR0cmlidXRlcyB3aXRob3V0IGEgdmFsdWUuCisgICAgICAo
d2hlbiB2YWx1ZQorICAgICAgICAoaW5zZXJ0CisgICAgICAgICA7OyBIVE1MIGJvb2xlYW4g
YXR0cmlidXRlcyBzaG91bGQgbm90IGhhdmUgYW4gPSB2YWx1ZS4gIFRoZQorICAgICAgICAg
OzsgcHJlc2VuY2Ugb2YgYSBib29sZWFuIGF0dHJpYnV0ZSBvbiBhbiBlbGVtZW50IHJlcHJl
c2VudHMKKyAgICAgICAgIDs7IHRoZSB0cnVlIHZhbHVlLCBhbmQgdGhlIGFic2VuY2Ugb2Yg
dGhlIGF0dHJpYnV0ZQorICAgICAgICAgOzsgcmVwcmVzZW50cyB0aGUgZmFsc2UgdmFsdWUu
CisgICAgICAgICAoaWYgKGFuZCAobm90IHhtbCkgKGRvbS0taHRtbC1ib29sZWFuLWF0dHJp
YnV0ZS1wIGF0dHIpKQorICAgICAgICAgICAgIChmb3JtYXQgIiAlcyIgYXR0cikKKyAgICAg
ICAgICAgKGZvcm1hdCAiICVzPSVTIiBhdHRyICh1cmwtaW5zZXJ0LWVudGl0aWVzLWluLXN0
cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiVzIiB2
YWx1ZSkpKSkpKSkKICAgICAobGV0KiAoKGNoaWxkcmVuIChkb20tY2hpbGRyZW4gZG9tKSkK
LQkgICAobm9uLXRleHQgbmlsKSkKKwkgICAobm9uLXRleHQgbmlsKQorICAgICAgICAgICAo
aW5kZW50ICgrIGNvbHVtbiAyKSkpCiAgICAgICAoaWYgKG51bGwgY2hpbGRyZW4pCiAJICAo
aW5zZXJ0ICIgLz4iKQogCShpbnNlcnQgIj4iKQpAQCAtMjkxLDE2ICszMDEsMTQgQEAgZG9t
LXByaW50CiAJICAgICAgKGluc2VydCAodXJsLWluc2VydC1lbnRpdGllcy1pbi1zdHJpbmcg
Y2hpbGQpKQogCSAgICAoc2V0cSBub24tdGV4dCB0KQogCSAgICAod2hlbiBwcmV0dHkKLSAg
ICAgICAgICAgICAgKGluc2VydCAiXG4iIChtYWtlLXN0cmluZyAoKyBjb2x1bW4gMikgP1xz
KSkpCisgICAgICAgICAgICAgIChpbnNlcnQgIlxuIikKKyAgICAgICAgICAgICAgKGluZGVu
dC1saW5lLXRvIGluZGVudCkpCiAJICAgIChkb20tcHJpbnQgY2hpbGQgcHJldHR5IHhtbCkp
KQogCTs7IElmIHdlIGluc2VydGVkIG5vbi10ZXh0IGNoaWxkIG5vZGVzLCBvciBhIHRleHQg
bm9kZSB0aGF0CiAJOzsgZW5kcyB3aXRoIGEgbmV3bGluZSwgdGhlbiB3ZSBpbmRlbnQgdGhl
IGVuZCB0YWcuCi0gICAgICAgICh3aGVuIChhbmQgcHJldHR5Ci0JCSAgIChvciAoYm9scCkK
LQkJICAgICAgIG5vbi10ZXh0KSkKLQkgICh1bmxlc3MgKGJvbHApCi0gICAgICAgICAgICAo
aW5zZXJ0ICJcbiIpKQotCSAgKGluc2VydCAobWFrZS1zdHJpbmcgY29sdW1uID9ccykpKQor
ICAgICAgICAod2hlbiAoYW5kIHByZXR0eSAob3IgKGJvbHApIG5vbi10ZXh0KSkKKwkgIChv
ciAoYm9scCkgKGluc2VydCAiXG4iKSkKKwkgIChpbmRlbnQtbGluZS10byBjb2x1bW4pKQog
ICAgICAgICAoaW5zZXJ0IChmb3JtYXQgIjwvJXM+IiAoZG9tLXRhZyBkb20pKSkpKSkpCiAK
IChwcm92aWRlICdkb20pCmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvZG9tLXRlc3RzLmVsIGIv
dGVzdC9saXNwL2RvbS10ZXN0cy5lbAppbmRleCA0N2MyYTdiYjU2OS4uZWVjYzRmMzk4MDgg
MTAwNjQ0Ci0tLSBhL3Rlc3QvbGlzcC9kb20tdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL2Rv
bS10ZXN0cy5lbApAQCAtMjcsNiArMjcsNyBAQAogOzs7IENvZGU6CiAKIChyZXF1aXJlICdk
b20pCisocmVxdWlyZSAnc3ZnKQogKHJlcXVpcmUgJ2VydCkKIAogOzsgYGRlZnN1YnN0J3Mg
YXJlIG5vdCBpbmxpbmVkIGluc2lkZSBgZXJ0LWRlZnRlc3QnIChzZWUgQnVnIzI0NDAyKSwK
QEAgLTIxOSw2ICsyMjAsNTkgQEAgZG9tLXRlc3RzLXByaW50CiAgICAgICAgICAgICAgICAg
ICAgICAiJmx0O2RpdiBjbGFzcz0mcXVvdDtkZWZhdWx0JnF1b3Q7Jmd0OyAmbHQ7L2RpdiZn
dDsiCiAgICAgICAgICAgICAgICAgICAgICAiPC9zYW1wPiIpKSkpKQogCisoZXJ0LWRlZnRl
c3QgZG9tLXRlc3RzLXByaW50LXN2ZyAoKQorICAiVGVzdCB0aGF0IGBkb20tcHJpbnQnIGNv
cnJlY3RseSBwcmludCBhIFNWRyBET00uIgorICAobGV0ICgoc3ZnIChzdmctY3JlYXRlIDEw
MCAxMDApKSkKKyAgICAoc3ZnLXJlY3RhbmdsZSBzdmcgMCAwICIxMDAlIiAiMTAwJSIgOmZp
bGwgImJsdWUiKQorICAgIChzdmctdGV4dCBzdmcgIkEgdGV4dCIgOnggMCA6eSA1NSA6c3Ry
b2tlICJ5ZWxsb3ciIDpmaWxsICJ5ZWxsb3ciKQorICAgICh3aXRoLXRlbXAtYnVmZmVyCisg
ICAgICAoZG9tLXByaW50IHN2ZyB0IHQpCisgICAgICAoc2hvdWxkCisgICAgICAgKGVxdWFs
CisgICAgICAgIChidWZmZXItc3RyaW5nKQorICAgICAgICAoY29uY2F0CisgICAgICAgICAi
PHN2ZyB3aWR0aD1cIjEwMFwiIGhlaWdodD1cIjEwMFwiIHZlcnNpb249XCIxLjFcIiAiCisg
ICAgICAgICAieG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiICIKKyAgICAg
ICAgICJ4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIj5cbiIK
KyAgICAgICAgICIgIDxyZWN0IHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiB4PVwi
MFwiIHk9XCIwXCIgZmlsbD1cImJsdWVcIiAvPlxuIgorICAgICAgICAgIiAgPHRleHQgZmls
bD1cInllbGxvd1wiIHN0cm9rZT1cInllbGxvd1wiIHk9XCI1NVwiIHg9XCIwXCI+QSB0ZXh0
PC90ZXh0PlxuIgorICAgICAgICAgIjwvc3ZnPiIpKSkpKSkKKworKGVydC1kZWZ0ZXN0IGRv
bS10ZXN0cy1wcmludC1odG1sLWJvb2xlYW4gKCkKKyAgIlRlc3QgdGhhdCBgZG9tLXByaW50
JyBjb3JyZWN0bHkgcHJpbnQgSFRNTCBib29sZWFuIGF0dHJpYnV0ZXMuIgorICAobGV0ICgo
ZG9tIChkb20tbm9kZQorICAgICAgICAgICAgICAiaHRtbCIgbmlsCisgICAgICAgICAgICAg
IChkb20tbm9kZSAiaGVhZCIgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAoZG9tLW5v
ZGUgInRpdGxlIiBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGVz
dCBib29sZWFuIGF0dHJpYnV0ZXMiKSkKKyAgICAgICAgICAgICAgKGRvbS1ub2RlICJib2R5
IiBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IFRoZSBmb2xsb3dpbmcgY2hlY2ti
b3hlcyBhcmUgY2hlY2tlZAorICAgICAgICAgICAgICAgICAgICAgICAgKGRvbS1ub2RlICJp
bnB1dCIgJygodHlwZSAuICJjaGVja2JveCIpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChjaGVja2VkIC4gIiIpKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIChkb20tbm9kZSAiaW5wdXQiICcoKHR5cGUgLiAiY2hlY2tib3giKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZCAuICJjaGVj
a2VkIikpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGRvbS1ub2RlICJpbnB1dCIgJygo
dHlwZSAuICJjaGVja2JveCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjaGVja2VkIC4gInRydWUiKSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAoZG9tLW5vZGUgImlucHV0IiAnKCh0eXBlIC4gImNoZWNrYm94IikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoZWNrZWQgLiAiZmFsc2UiKSkp
CisgICAgICAgICAgICAgICAgICAgICAgICA7OyBUaGUgZm9sbG93aW5nIGNoZWNrYm94IGlz
IG5vdCBjaGVja2VkCisgICAgICAgICAgICAgICAgICAgICAgICAoZG9tLW5vZGUgImlucHV0
IiAnKCh0eXBlIC4gImNoZWNrYm94IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGNoZWNrZWQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICkp
KSkKKyAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgKGRvbS1wcmludCBkb20pCisgICAg
ICAoc2hvdWxkCisgICAgICAgKGVxdWFsCisgICAgICAgIChidWZmZXItc3RyaW5nKQorICAg
ICAgICAoY29uY2F0CisgICAgICAgICAiPGh0bWw+PGhlYWQ+PHRpdGxlPlRlc3QgYm9vbGVh
biBhdHRyaWJ1dGVzPC90aXRsZT48L2hlYWQ+PGJvZHk+IgorICAgICAgICAgIjxpbnB1dCB0
eXBlPVwiY2hlY2tib3hcIiBjaGVja2VkIC8+IgorICAgICAgICAgIjxpbnB1dCB0eXBlPVwi
Y2hlY2tib3hcIiBjaGVja2VkIC8+IgorICAgICAgICAgIjxpbnB1dCB0eXBlPVwiY2hlY2ti
b3hcIiBjaGVja2VkIC8+IgorICAgICAgICAgIjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBj
aGVja2VkIC8+IgorICAgICAgICAgIjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiAvPiIKKyAg
ICAgICAgICI8L2JvZHk+PC9odG1sPiIpKSkpKSkKKwogKGVydC1kZWZ0ZXN0IGRvbS10ZXN0
LXNlYXJjaCAoKQogICAobGV0ICgoZG9tICcoYSBuaWwgKGIgbmlsIChjIG5pbCkpKSkpCiAg
ICAgKHNob3VsZCAoZXF1YWwgKGRvbS1zZWFyY2ggZG9tIChsYW1iZGEgKGQpIChlcSAoZG9t
LXRhZyBkKSAnYSkpKQo=

--------------DbNx3wQebTmUTMQ5XPySP6MO--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75928; Package emacs. Full text available.

Message received at 75928 <at> debbugs.gnu.org:


Received: (at 75928) by debbugs.gnu.org; 8 Feb 2025 09:41:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 08 04:41:48 2025
Received: from localhost ([127.0.0.1]:38588 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tghLQ-0006Sg-As
	for submit <at> debbugs.gnu.org; Sat, 08 Feb 2025 04:41:48 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:39712)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tghLN-0006SR-UO
 for 75928 <at> debbugs.gnu.org; Sat, 08 Feb 2025 04:41:46 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tghLI-0002sr-1b; Sat, 08 Feb 2025 04:41:40 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=byzuz9DsEEeLwXkLG3Be08g3hxknnxvx83YJfEJV6dw=; b=ROyglO+VXBpD
 cQ6+5Qjkiqo6gGhUZ59Ojd0xzPku8o44cwjbqTzn7nkpfQiBPFYRsWImw32ckTb/a5C3G5A3UwbMi
 xHMOoC/NUMJC0686nukvIr72qMJykH6d+WIxF3Dv2PC0jrmvftShTvQiKZRrAK0C2U/XAri+GtbSZ
 e4i2RN0/tO0hLWk67m8nCyzIzcWl7HGz6c/XXgciKZB2LKDmfcCKpTY8eydSClLKxtoDcpE0ERVhM
 rIMHixFLCQ3tE8xzwiYSb+MxR4OtmHPICTw5WbLDChfed/op9kqpy2pI4zn7smaKwxsD48vQnSvYt
 VMwCi6nH/2MuPuuvKPZPdA==;
Date: Sat, 08 Feb 2025 11:41:38 +0200
Message-Id: <86o6zc3h9p.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: David Ponce <da_vid@HIDDEN>
In-Reply-To: <76435a3b-75a8-42f4-b1cf-d7f054e11737@HIDDEN>
 (bug-gnu-emacs@HIDDEN)
Subject: Re: bug#75928: 31.0.50; `dom-print' often fails to print an SVG DOM
References: <ec2723d5-9f6c-4250-8ab8-50e6664c4565@HIDDEN>
 <76435a3b-75a8-42f4-b1cf-d7f054e11737@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75928
Cc: 75928 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Wed, 5 Feb 2025 13:01:04 +0100
> From:  David Ponce via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
> 
> I attached a new patch that also avoid printing attributes without a
> value (value is nil in the DOM).
> 
> I also refreshed the list of HTML boolean attributes from the current
> standard, and put checking for a boolean attribute in a separate
> inline function for clarity.
> 
> The patch also slightly improve the code by computing the indentation
> column outside of loop and delegating indentation to `indent-line-to'.

Thanks.

Using indent-line-to requires binding indent-tabs-mode to nil, to make
sure we produce spaces and not TABs, right?

Also, please make sure the dom.el test suite still passes after this
change, if you haven't already.  Bonus points for providing a new test
for this feature.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75928; Package emacs. Full text available.
Added tag(s) patch. Request was from Stefan Kangas <stefankangas@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at 75928 <at> debbugs.gnu.org:


Received: (at 75928) by debbugs.gnu.org; 5 Feb 2025 12:01:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 05 07:01:16 2025
Received: from localhost ([127.0.0.1]:48847 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tfe5j-0003UH-Hd
	for submit <at> debbugs.gnu.org; Wed, 05 Feb 2025 07:01:16 -0500
Received: from smtp-23.smtpout.orange.fr ([80.12.242.23]:38031
 helo=smtp.smtpout.orange.fr)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1tfe5e-0003U0-J9
 for 75928 <at> debbugs.gnu.org; Wed, 05 Feb 2025 07:01:13 -0500
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
 id fe5Yt3ZUXSgH6fe5btzyKp; Wed, 05 Feb 2025 13:01:08 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
 s=t20230301; t=1738756868;
 bh=iVJL8u2izKOyr89bK17Hdxc9BqCgBfOvyGJe5Z690xI=;
 h=Message-ID:Date:MIME-Version:To:From:Subject;
 b=NaXueRf84G/F+ENNBF7hcZoWHsZFd7pZVWyg9PdZE7/wVmf628ycnjsKOtK4L7taI
 cUq6ZKh/NScwZOCdZ1C669396ocmgqOCx47BGeLsLK9vlefOsfT18rZRzOk7pegCi8
 Dot/M7CArSHvP8n8/Ied59uPngyVcD5S2l3SW4a+HxhaifUeg4Voa8yrbP8fWh/3YO
 gUm4PaEPXWl5VONWOhcN8MhLq6TR0QkXLtDKexfzYi02YxqwYCK/xnUUTNOgc1pyYC
 SQ+yybYZTaQI/qqvghjB6jKGQYKP+s5bwEqmwKZa2eJEV8UcMT4hqU/h2zkOhOC3n5
 gPCTUfGGWWOyA==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Wed, 05 Feb 2025 13:01:08 +0100
X-ME-IP: 90.112.40.65
Content-Type: multipart/mixed; boundary="------------kFME70TTGUdjAuHdGz7SGN3F"
Message-ID: <76435a3b-75a8-42f4-b1cf-d7f054e11737@HIDDEN>
Date: Wed, 5 Feb 2025 13:01:04 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: 75928 <at> debbugs.gnu.org
Content-Language: fr, en-US
From: David Ponce <da_vid@HIDDEN>
Subject: Re: 31.0.50; `dom-print' often fails to print an SVG DOM
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75928
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

This is a multi-part message in MIME format.
--------------kFME70TTGUdjAuHdGz7SGN3F
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hello,

I attached a new patch that also avoid printing attributes without a
value (value is nil in the DOM).

I also refreshed the list of HTML boolean attributes from the current
standard, and put checking for a boolean attribute in a separate
inline function for clarity.

The patch also slightly improve the code by computing the indentation
column outside of loop and delegating indentation to `indent-line-to'.

Here is a change log:

2025-02-05  David Ponce  <da_vid@HIDDEN>

	Fix DOM printing when an attribute value is not a string,
	which is often the case in SVG DOM.  Don't print attributes
	without a value.  Refresh the list of HTML boolean attributes.

	* dom.el (dom--html-boolean-attribute-p): New function.
	(dom-print): Use it.  Convert attribute value to string before
	to call `url-insert-entities-in-string'.  Don't print
	attribute without a value.  Compute indentation column outside
	of loop and call `indent-line-to' to indent line.

This new version passes the `dom-tests-print'.

Thanks!
--------------kFME70TTGUdjAuHdGz7SGN3F
Content-Type: text/x-patch; charset=UTF-8; name="dom-patch-V1.patch"
Content-Disposition: attachment; filename="dom-patch-V1.patch"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL2xpc3AvZG9tLmVsIGIvbGlzcC9kb20uZWwKaW5kZXggZmMwMzIwNThl
OWYuLjYzZjQ3YjVmYzEyIDEwMDY0NAotLS0gYS9saXNwL2RvbS5lbAorKysgYi9saXNwL2Rv
bS5lbApAQCAtMjU4LDMxICsyNTgsNDAgQEAgZG9tLXBwCiAJICAgICAgKGluc2VydCAiKSIp
CiAJICAgIChpbnNlcnQgIlxuIiAobWFrZS1zdHJpbmcgKDErIGNvbHVtbikgP1xzKSkpKSkp
KSkKIAorKGRlZmluZS1pbmxpbmUgZG9tLS1odG1sLWJvb2xlYW4tYXR0cmlidXRlLXAgKGF0
dHIpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBBVFRSIGlzIGFuIEhUTUwgYm9vbGVhbiBhdHRy
aWJ1dGUuIgorICAoaW5saW5lLXF1b3RlCisgICAobWVtcSAsYXR0cgorICAgICAgICAgOzsg
RXh0cmFjdGVkIGZyb20gdGhlIEhUTUwgTGl2aW5nIFN0YW5kYXJkIGxpc3Qgb2YgYXR0cmli
dXRlcworICAgICAgICAgOzsgYXQgPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2F0
dHJpYnV0ZXMtMz4uCisgICAgICAgICAnKCBhbGxvd2Z1bGxzY3JlZW4gYWxwaGEgYXN5bmMg
YXV0b2ZvY3VzIGF1dG9wbGF5IGNoZWNrZWQKKyAgICAgICAgICAgIGNvbnRyb2xzIGRlZmF1
bHQgZGVmZXIgZGlzYWJsZWQgZm9ybW5vdmFsaWRhdGUgaW5lcnQgaXNtYXAKKyAgICAgICAg
ICAgIGl0ZW1zY29wZSBsb29wIG11bHRpcGxlIG11dGVkIG5vbW9kdWxlIG5vdmFsaWRhdGUg
b3BlbgorICAgICAgICAgICAgcGxheXNpbmxpbmUgcmVhZG9ubHkgcmVxdWlyZWQgcmV2ZXJz
ZWQgc2VsZWN0ZWQKKyAgICAgICAgICAgIHNoYWRvd3Jvb3RjbG9uYWJsZSBzaGFkb3dyb290
ZGVsZWdhdGVzZm9jdXMKKyAgICAgICAgICAgIHNoYWRvd3Jvb3RzZXJpYWxpemFibGUpKSkp
CisKIChkZWZ1biBkb20tcHJpbnQgKGRvbSAmb3B0aW9uYWwgcHJldHR5IHhtbCkKICAgIlBy
aW50IERPTSBhdCBwb2ludCBhcyBIVE1ML1hNTC4KIElmIFBSRVRUWSwgaW5kZW50IHRoZSBI
VE1ML1hNTCBsb2dpY2FsbHkuCiBJZiBYTUwsIGdlbmVyYXRlIFhNTCBpbnN0ZWFkIG9mIEhU
TUwuIgogICAobGV0ICgoY29sdW1uIChjdXJyZW50LWNvbHVtbikpKQogICAgIChpbnNlcnQg
KGZvcm1hdCAiPCVzIiAoZG9tLXRhZyBkb20pKSkKLSAgICAobGV0ICgoYXR0ciAoZG9tLWF0
dHJpYnV0ZXMgZG9tKSkpCi0gICAgICAoZG9saXN0IChlbGVtIGF0dHIpCi0JOzsgSW4gSFRN
TCwgdGhlc2UgYXJlIGJvb2xlYW4gYXR0cmlidXRlcyB0aGF0IHNob3VsZCBub3QgaGF2ZQot
CTs7IGFuID0gdmFsdWUuCi0JKGluc2VydCAoaWYgKGFuZCAobWVtcSAoY2FyIGVsZW0pCi0J
CQkgICAgICAgJyhhc3luYyBhdXRvZm9jdXMgYXV0b3BsYXkgY2hlY2tlZAotCQkJICAgICAg
ICAgY29udGVudGVkaXRhYmxlIGNvbnRyb2xzIGRlZmF1bHQKLQkJCSAgICAgICAgIGRlZmVy
IGRpc2FibGVkIGZvcm1Ob1ZhbGlkYXRlIGZyYW1lYm9yZGVyCi0JCQkgICAgICAgICBoaWRk
ZW4gaXNtYXAgaXRlbXNjb3BlIGxvb3AKLQkJCSAgICAgICAgIG11bHRpcGxlIG11dGVkIG5v
bW9kdWxlIG5vdmFsaWRhdGUgb3BlbgotCQkJICAgICAgICAgcmVhZG9ubHkgcmVxdWlyZWQg
cmV2ZXJzZWQKLQkJCSAgICAgICAgIHNjb3BlZCBzZWxlY3RlZCB0eXBlbXVzdG1hdGNoKSkK
LQkJCSAoY2RyIGVsZW0pCi0JCQkgKG5vdCB4bWwpKQotCQkgICAgKGZvcm1hdCAiICVzIiAo
Y2FyIGVsZW0pKQotCQkgIChmb3JtYXQgIiAlcz1cIiVzXCIiIChjYXIgZWxlbSkKLQkgICAg
ICAgICAgICAgICAgICAodXJsLWluc2VydC1lbnRpdGllcy1pbi1zdHJpbmcgKGNkciBlbGVt
KSkpKSkpKQorICAgIChwY2FzZS1kb2xpc3QgKGAoLGF0dHIgLiAsdmFsdWUpIChkb20tYXR0
cmlidXRlcyBkb20pKQorICAgICAgOzsgRG9uJ3QgcHJpbnQgYXR0cmlidXRlcyB3aXRob3V0
IGEgdmFsdWUuCisgICAgICAod2hlbiB2YWx1ZQorICAgICAgICAoaW5zZXJ0CisgICAgICAg
ICA7OyBIVE1MIGJvb2xlYW4gYXR0cmlidXRlcyBzaG91bGQgbm90IGhhdmUgYW4gPSB2YWx1
ZS4gIFRoZQorICAgICAgICAgOzsgcHJlc2VuY2Ugb2YgYSBib29sZWFuIGF0dHJpYnV0ZSBv
biBhbiBlbGVtZW50IHJlcHJlc2VudHMKKyAgICAgICAgIDs7IHRoZSB0cnVlIHZhbHVlLCBh
bmQgdGhlIGFic2VuY2Ugb2YgdGhlIGF0dHJpYnV0ZQorICAgICAgICAgOzsgcmVwcmVzZW50
cyB0aGUgZmFsc2UgdmFsdWUuCisgICAgICAgICAoaWYgKGFuZCAobm90IHhtbCkgKGRvbS0t
aHRtbC1ib29sZWFuLWF0dHJpYnV0ZS1wIGF0dHIpKQorICAgICAgICAgICAgIChmb3JtYXQg
IiAlcyIgYXR0cikKKyAgICAgICAgICAgKGZvcm1hdCAiICVzPSVTIiBhdHRyICh1cmwtaW5z
ZXJ0LWVudGl0aWVzLWluLXN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChmb3JtYXQgIiVzIiB2YWx1ZSkpKSkpKSkKICAgICAobGV0KiAoKGNoaWxkcmVuIChk
b20tY2hpbGRyZW4gZG9tKSkKLQkgICAobm9uLXRleHQgbmlsKSkKKwkgICAobm9uLXRleHQg
bmlsKQorICAgICAgICAgICAoaW5kZW50ICgrIGNvbHVtbiAyKSkpCiAgICAgICAoaWYgKG51
bGwgY2hpbGRyZW4pCiAJICAoaW5zZXJ0ICIgLz4iKQogCShpbnNlcnQgIj4iKQpAQCAtMjkx
LDE2ICszMDAsMTQgQEAgZG9tLXByaW50CiAJICAgICAgKGluc2VydCAodXJsLWluc2VydC1l
bnRpdGllcy1pbi1zdHJpbmcgY2hpbGQpKQogCSAgICAoc2V0cSBub24tdGV4dCB0KQogCSAg
ICAod2hlbiBwcmV0dHkKLSAgICAgICAgICAgICAgKGluc2VydCAiXG4iIChtYWtlLXN0cmlu
ZyAoKyBjb2x1bW4gMikgP1xzKSkpCisgICAgICAgICAgICAgIChpbnNlcnQgIlxuIikKKyAg
ICAgICAgICAgICAgKGluZGVudC1saW5lLXRvIGluZGVudCkpCiAJICAgIChkb20tcHJpbnQg
Y2hpbGQgcHJldHR5IHhtbCkpKQogCTs7IElmIHdlIGluc2VydGVkIG5vbi10ZXh0IGNoaWxk
IG5vZGVzLCBvciBhIHRleHQgbm9kZSB0aGF0CiAJOzsgZW5kcyB3aXRoIGEgbmV3bGluZSwg
dGhlbiB3ZSBpbmRlbnQgdGhlIGVuZCB0YWcuCi0gICAgICAgICh3aGVuIChhbmQgcHJldHR5
Ci0JCSAgIChvciAoYm9scCkKLQkJICAgICAgIG5vbi10ZXh0KSkKLQkgICh1bmxlc3MgKGJv
bHApCi0gICAgICAgICAgICAoaW5zZXJ0ICJcbiIpKQotCSAgKGluc2VydCAobWFrZS1zdHJp
bmcgY29sdW1uID9ccykpKQorICAgICAgICAod2hlbiAoYW5kIHByZXR0eSAob3IgKGJvbHAp
IG5vbi10ZXh0KSkKKwkgIChvciAoYm9scCkgKGluc2VydCAiXG4iKSkKKwkgIChpbmRlbnQt
bGluZS10byBjb2x1bW4pKQogICAgICAgICAoaW5zZXJ0IChmb3JtYXQgIjwvJXM+IiAoZG9t
LXRhZyBkb20pKSkpKSkpCiAKIChwcm92aWRlICdkb20pCg==

--------------kFME70TTGUdjAuHdGz7SGN3F--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75928; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 29 Jan 2025 15:52:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 29 10:52:56 2025
Received: from localhost ([127.0.0.1]:42630 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdAN5-0001eB-CI
	for submit <at> debbugs.gnu.org; Wed, 29 Jan 2025 10:52:55 -0500
Received: from lists.gnu.org ([2001:470:142::17]:58190)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <da_vid@HIDDEN>) id 1tdAN0-0001du-N7
 for submit <at> debbugs.gnu.org; Wed, 29 Jan 2025 10:52:53 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <da_vid@HIDDEN>) id 1tdAMu-0001LU-L0
 for bug-gnu-emacs@HIDDEN; Wed, 29 Jan 2025 10:52:45 -0500
Received: from smtp-78.smtpout.orange.fr ([80.12.242.78]
 helo=smtp.smtpout.orange.fr)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <da_vid@HIDDEN>) id 1tdAMq-0003LX-SI
 for bug-gnu-emacs@HIDDEN; Wed, 29 Jan 2025 10:52:43 -0500
Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA
 id dAMet9fP1cxJ6dAMhtEGN9; Wed, 29 Jan 2025 16:52:32 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr;
 s=t20230301; t=1738165952;
 bh=8kJfK+5OvdxsCjcFEL0b091RmoIs7akNJN9qfoFMs6s=;
 h=Message-ID:Date:MIME-Version:To:From:Subject;
 b=qLPgRrvIol87O490K6fTf6ASCntxtY9Zh/Yxdl2oJdeGyMpFmXQWBxMpwtrj+FO1s
 Sv/xePZtI3gl7PWFeUSMSS4pvNqmzxXFOkaPooBmXSqF1locRyq5PH3Rxv6TZHb5Sc
 C9gEZtH7sMKl7joFEd+wxrOnKHve3S7sStFN9vRjhRdCPc3rD13d0xrUsRXez3Wgfg
 5U3zkZ2NgCBrlIvUWiXtsentwTNs0PkLYqvRVKWTyi9PpDfpv2u6vYRMR5tz9QfTGa
 jopFEdsFVXfWQMLwbbp/zZn+97FszBtFABNSxTGHVGuGbQYksjIjXTO4cli2b+/8k6
 /uX/u+Dqmjhyg==
X-ME-Helo: [192.168.1.21]
X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI=
X-ME-Date: Wed, 29 Jan 2025 16:52:32 +0100
X-ME-IP: 90.112.40.65
Content-Type: multipart/mixed; boundary="------------T9LwNwB1Qf0NtnmF25vRJCkH"
Message-ID: <ec2723d5-9f6c-4250-8ab8-50e6664c4565@HIDDEN>
Date: Wed, 29 Jan 2025 16:52:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: fr, en-US
To: bug-gnu-emacs@HIDDEN
From: David Ponce <da_vid@HIDDEN>
Subject: 31.0.50; `dom-print' often fails to print an SVG DOM
Received-SPF: pass client-ip=80.12.242.78; envelope-from=da_vid@HIDDEN;
 helo=smtp.smtpout.orange.fr
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
 RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001,
 RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,
 SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)

This is a multi-part message in MIME format.
--------------T9LwNwB1Qf0NtnmF25vRJCkH
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hello,

Currently `dom-print' is mostly unusable to print an SVG DOM because it
fails as soon as it encounters an attribute value which is not a string.
This is unfortunate, because `dom-print' can be very useful for
examining a DOM by pretty-printing it.

Here is a simple example that illustrates the problem:

(require 'svg)
(let ((svg (svg-create 100 100)))
   (svg-rectangle svg 0 0 "100%" "100%" :fill "blue")
   (svg-text svg "A text" :x 0 :y 55 :stroke "yellow" :fill "yellow")
   (dom-print svg t t))

Which produce this backtrace when evaluated in the *scratch* buffer:

Debugger entered--Lisp error: (wrong-type-argument sequencep 100)
   replace-regexp-in-string("[&<>\"]" #f(compiled-function (c) #<bytecode 0x1119c0c6891a2a03>) 100)
   url-insert-entities-in-string(100)
   dom-print((svg ((width . 100) (height . 100) (version . "1.1") (xmlns . "http://www.w3.org/2000/svg") (xmlns:xlink . "http://www.w3.org/1999/xlink")) (rect ((width . "100%") (height . "100%") (x . 0) (y . 0) (fill . "blue"))) (text ((fill . "yellow") (stroke . "yellow") (y . 55) (x . 0)) "A text")) t t)
   (let ((svg (svg-create 100 100))) (svg-rectangle svg 0 0 "100%" "100%" :fill "blue") (svg-text svg "A text" :x 0 :y 55 :stroke "yellow" :fill "yellow") (dom-print svg t t))
   (progn (let ((svg (svg-create 100 100))) (svg-rectangle svg 0 0 "100%" "100%" :fill "blue") (svg-text svg "A text" :x 0 :y 55 :stroke "yellow" :fill "yellow") (dom-print svg t t)))
   eval((progn (let ((svg (svg-create 100 100))) (svg-rectangle svg 0 0 "100%" "100%" :fill "blue") (svg-text svg "A text" :x 0 :y 55 :stroke "yellow" :fill "yellow") (dom-print svg t t))) t)
   elisp--eval-last-sexp(t)
   #f(compiled-function () #<bytecode 0x299b97085c5ba>)()
   handler-bind-1(#f(compiled-function () #<bytecode 0x299b97085c5ba>) (error) eval-expression--debug)
   eval-last-sexp(t)
   eval-print-last-sexp(nil)
   funcall-interactively(eval-print-last-sexp nil)
   call-interactively(eval-print-last-sexp nil nil)
   command-execute(eval-print-last-sexp)
  
The cause is that `dom-print' calls the function
`url-insert-entities-in-string' to convert special characters in
attribute value assuming this value is a string, which is not always
true in an SVG DOM.

I propose the attached very simple patch that solves the issue.
Here is a possible changelog:

2025-01-29  David Ponce  <da_vid@HIDDEN>

	* dom.el (dom-print): Ensure to pass a string to
	`url-insert-entities-in-string'.

With this patch applied the above example prints the expected result:

<svg width="100" height="100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
   <rect width="100%" height="100%" x="0" y="0" fill="blue" />
   <text fill="yellow" stroke="yellow" y="55" x="0">A text</text>
</svg>nil



In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
  3.24.43, cairo version 1.18.0) of 2025-01-28
Repository revision: 8c4a4b4eab8ac4dc26e65d552821f3f0b49c79c4
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12014000
System Description: Fedora Linux 40 (KDE Plasma)

Configured using:
  'configure --with-native-compilation=no'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
   value of $LC_TIME: fr_FR.utf8
   value of $LANG: fr_FR.UTF-8
   locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
   tooltip-mode: t
   global-eldoc-mode: t
   eldoc-mode: t
   show-paren-mode: t
   electric-indent-mode: t
   mouse-wheel-mode: t
   tool-bar-mode: t
   menu-bar-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   font-lock-mode: t
   blink-cursor-mode: t
   minibuffer-regexp-mode: t
   line-number-mode: t
   indent-tabs-mode: t
   transient-mark-mode: t
   auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t

Load-path shadows:
None found.
--------------T9LwNwB1Qf0NtnmF25vRJCkH
Content-Type: text/x-patch; charset=UTF-8; name="dom-patch-V0.patch"
Content-Disposition: attachment; filename="dom-patch-V0.patch"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL2xpc3AvZG9tLmVsIGIvbGlzcC9kb20uZWwKaW5kZXggZmMwMzIwNThl
OWYuLjllYjdjNThjMzhhIDEwMDY0NAotLS0gYS9saXNwL2RvbS5lbAorKysgYi9saXNwL2Rv
bS5lbApAQCAtMjgwLDcgKzI4MCw4IEBAIGRvbS1wcmludAogCQkJIChub3QgeG1sKSkKIAkJ
ICAgIChmb3JtYXQgIiAlcyIgKGNhciBlbGVtKSkKIAkJICAoZm9ybWF0ICIgJXM9XCIlc1wi
IiAoY2FyIGVsZW0pCi0JICAgICAgICAgICAgICAgICAgKHVybC1pbnNlcnQtZW50aXRpZXMt
aW4tc3RyaW5nIChjZHIgZWxlbSkpKSkpKSkKKwkgICAgICAgICAgICAgICAgICAodXJsLWlu
c2VydC1lbnRpdGllcy1pbi1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChm
b3JtYXQgIiVzIiAoY2RyIGVsZW0pKSkpKSkpKQogICAgIChsZXQqICgoY2hpbGRyZW4gKGRv
bS1jaGlsZHJlbiBkb20pKQogCSAgIChub24tdGV4dCBuaWwpKQogICAgICAgKGlmIChudWxs
IGNoaWxkcmVuKQo=

--------------T9LwNwB1Qf0NtnmF25vRJCkH--




Acknowledgement sent to David Ponce <da_vid@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#75928; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sat, 8 Feb 2025 13:00:02 UTC

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