GNU logs - #71605, boring messages


Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Jim Porter <jporterbugs@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 17 Jun 2024 02:57:02 +0000
Resent-Message-ID: <handler.71605.B.17185930149233 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: 71605 <at> debbugs.gnu.org
X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.17185930149233
          (code B ref -1); Mon, 17 Jun 2024 02:57:02 +0000
Received: (at submit) by debbugs.gnu.org; 17 Jun 2024 02:56:54 +0000
Received: from localhost ([127.0.0.1]:58586 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJ2Y9-0002Op-CH
	for submit <at> debbugs.gnu.org; Sun, 16 Jun 2024 22:56:54 -0400
Received: from lists.gnu.org ([209.51.188.17]:36536)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <jporterbugs@HIDDEN>) id 1sJ2Y6-0002Oe-R3
 for submit <at> debbugs.gnu.org; Sun, 16 Jun 2024 22:56:51 -0400
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 <jporterbugs@HIDDEN>)
 id 1sJ2Y4-0007XU-Ry
 for bug-gnu-emacs@HIDDEN; Sun, 16 Jun 2024 22:56:48 -0400
Received: from mail-oo1-xc35.google.com ([2607:f8b0:4864:20::c35])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <jporterbugs@HIDDEN>)
 id 1sJ2Y2-0001Xa-NT
 for bug-gnu-emacs@HIDDEN; Sun, 16 Jun 2024 22:56:48 -0400
Received: by mail-oo1-xc35.google.com with SMTP id
 006d021491bc7-5ba090b0336so1885976eaf.1
 for <bug-gnu-emacs@HIDDEN>; Sun, 16 Jun 2024 19:56:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1718593005; x=1719197805; darn=gnu.org;
 h=subject:from:to:content-language:mime-version:date:message-id:from
 :to:cc:subject:date:message-id:reply-to;
 bh=BFdBAsSXoXCSy8qVsJxvuW/KGYtPTGyycN3uAKx3TXw=;
 b=TFN2lstKWx53It0rRxCS9faWzLXr1oOZ2VN6+anKrSMOXmF0/E/PxSb/rKIvk6eiwX
 3L3oMUTV9V1+o7AdxDtU7579snuFInSmpgws5wI4GIvNc8e7xWB9jni9FE30b+Z/sJeM
 GWghJVvSl/vGWExGDrj9ktB/iJn0G9Dmt+XRUKeB9LKK0EAbVRbQDEz6FJWj1rRiPvnh
 ZUV2v6ehTmH4X7GqPIqxXiJ9J2Vp2zxfrq+Z68tsV8PiH/QIxq84MzminSLGe3YNMqjl
 nnZm6mkvicvW6XXHhx9aOo21gKtZQMvzC1LuJGyf7SZm92pn8uFU577ZZIUi5UlmV9ea
 5dGQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1718593005; x=1719197805;
 h=subject:from:to:content-language:mime-version:date:message-id
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=BFdBAsSXoXCSy8qVsJxvuW/KGYtPTGyycN3uAKx3TXw=;
 b=dycxHvb/7pGktWLc0fcXMop8ZkmOegmFtSLRaqMS+ScytDEDSwXnFRuLEFbn4ZUQBY
 j+dp7Ns1vvv5YseA2E2Fx3czezokJUOYJWGENw+xZHIxMb0RG7q5jnD/kXungQbWAh2X
 w7yLNz0SIaFL8LBo0cfx/ZQBcysPWGk/s0kmqlTd7Q6w69cVsVWVnnXAO3isra8zayAh
 TTlLAz1F75zWNqGP/8OW0GGFb2g6QdAAylaNTzlCWLUZ2pgZ+PQV40CwjxDelU6M/gFL
 92SFRNTQp7SacYkeKyS90U/DITvKOOWm3NSRwnwgrRAvK9W1quXfsOXpbxVcxdY5W/mW
 UINA==
X-Gm-Message-State: AOJu0YyoNyuuJWjkYafrAJ2qNruVfCBMzCiPvCJhjAqOXiyPP3Ot6Smz
 tfbus4afBv7YXUQ5rvR85yFtjqbovUQB0qlbYGrlMymAVeA34Yz1G3hXIA==
X-Google-Smtp-Source: AGHT+IEBnl2lPR+uNcla6XLoFd5OwY4uS7kTxqGRXpfVhRKHLIroEHv90ZIQevQbYAzq7t2ezKXfoA==
X-Received: by 2002:a05:6358:5c:b0:1a1:c982:47c0 with SMTP id
 e5c5f4694b2df-1a1c982547fmr467175855d.32.1718593004868; 
 Sun, 16 Jun 2024 19:56:44 -0700 (PDT)
Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com.
 [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id
 d9443c01a7336-1f855f39a42sm70452415ad.268.2024.06.16.19.56.43
 for <bug-gnu-emacs@HIDDEN>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sun, 16 Jun 2024 19:56:44 -0700 (PDT)
Content-Type: multipart/mixed; boundary="------------1ABD0qXctHlxJqSTmVRggRBy"
Message-ID: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
Date: Sun, 16 Jun 2024 19:56:44 -0700
MIME-Version: 1.0
X-Mozilla-News-Host: news://news.gmane.io:119
Content-Language: en-US
From: Jim Porter <jporterbugs@HIDDEN>
Received-SPF: pass client-ip=2607:f8b0:4864:20::c35;
 envelope-from=jporterbugs@HIDDEN; helo=mail-oo1-xc35.google.com
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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001,
 T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.3 (-)
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: -2.3 (--)

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

(Note: I plan to merge this only after we cut the Emacs 30 release 
branch, since it seems a bit too substantial a change to sneak in right 
near the end. However, I think the patch is mostly done aside from one 
remaining issue, so any feedback is very welcome.)

'visual-wrap-prefix-mode' has one small issue: since the wrap prefix is 
just a string, the wrapped text may not line up for variable-width 
fonts. This is mainly in cases like so:

   * here is some text that
     got visually wrapped

If the "* " is variable-width, the second line will probably be indented 
wrong by a few pixels.

The attached patch adds a display spec in this case so that the text 
lines up perfectly. There's currently one problem though: I'm not sure 
how to regenerate the wrap prefix automatically if the face changes. 
It's not hard to handle for 'text-scale-adjust', but I don't know how to 
handle 'global-text-scale-adjust' (or other things that could change the 
face[1]).

Does anyone have any ideas for this part?

[1] There's 'after-setting-font-hook', but that doesn't cover everything 
either.
--------------1ABD0qXctHlxJqSTmVRggRBy
Content-Type: text/plain; charset=UTF-8;
 name="0001-Add-support-for-variable-width-text-in-visual-wrap-p.patch"
Content-Disposition: attachment;
 filename*0="0001-Add-support-for-variable-width-text-in-visual-wrap-p.pa";
 filename*1="tch"
Content-Transfer-Encoding: base64

RnJvbSA2OTZhMjcxNjAxNDU3ZjYzZGQ3MTI3MjYxMjQyZTIxNDMyNzEzNDAyIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j
b20+CkRhdGU6IFN1biwgMTYgSnVuIDIwMjQgMTU6MjE6NTIgLTA3MDAKU3ViamVjdDogW1BB
VENIXSBBZGQgc3VwcG9ydCBmb3IgdmFyaWFibGUtd2lkdGggdGV4dCBpbgogJ3Zpc3VhbC13
cmFwLXByZWZpeC1tb2RlJwoKVGhpcyB1c2VzIGEgZGlzcGxheSBzcGVjIHRvIHNldCB0aGUg
d2lkdGggY29ycmVjdGx5IHdoZW4gaW5kZW50aW5nIHdpdGgKc3BhY2VzLgoKKiBsaXNwL2Vt
YWNzLWxpc3Avc3Vici14LmVsIChzdHJpbmctcGl4ZWwtd2lkdGgpOiBOZXcgYXJndW1lbnQg
QlVGRkVSLgoKKiBsaXNwL3Zpc3VhbC13cmFwLmVsICh2aXN1YWwtd3JhcC0tYWRqdXN0LWRp
c3BsYXktd2lkdGgpCih2aXN1YWwtd3JhcC0tY29udGVudC1wcmVmaXgpOiBOZXcgZnVuY3Rp
b25zLgoodmlzdWFsLXdyYXAtLWV4dHJhLWluZGVudCk6IFJlbmFtZSBmcm9tICd2aXN1YWwt
d3JhcC0tcHJlZml4JyBhbmQgY2FsbAondmlzdWFsLXdyYXAtLWFkanVzdC1kaXNwbGF5LXdp
ZHRoJy4KKHZpc3VhbC13cmFwLWZpbGwtY29udGV4dC1wcmVmaXgpOiBTdXBwb3J0IGRpc3Bs
YXkgd2lkdGguCih2aXN1YWwtd3JhcC1wcmVmaXgtZnVuY3Rpb24pOiBBbGxvdyAnbGJwJyB0
byBiZSBhdCAncG9pbnQtbWluJy4KKHZpc3VhbC13cmFwLXByZWZpeC1tb2RlKTogUmVmb250
aWZ5IHdoZW4gY2hhbmdpbmcgdGV4dCBzY2FsZS4KCiogZG9jL2xpc3ByZWYvZGlzcGxheS50
ZXhpIChTaXplIG9mIERpc3BsYXllZCBUZXh0KTogRG9jdW1lbnQgQlVGRkVSCmFyZ3VtZW50
IGZvciAnc3RyaW5nLXBpeGVsLXdpZHRoJy4KCiogZXRjL05FV1M6IEFubm91bmNlIHRoaXMg
Y2hhbmdlLgotLS0KIGRvYy9saXNwcmVmL2Rpc3BsYXkudGV4aSAgfCAgNiArKy0tCiBldGMv
TkVXUyAgICAgICAgICAgICAgICAgIHwgIDggKysrKy0KIGxpc3AvZW1hY3MtbGlzcC9zdWJy
LXguZWwgfCAxMSArKysrLS0KIGxpc3AvdmlzdWFsLXdyYXAuZWwgICAgICAgfCA3MyArKysr
KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwg
NzAgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL2xp
c3ByZWYvZGlzcGxheS50ZXhpIGIvZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpCmluZGV4IGQ1
Yzk2ZDEzZTAyLi41Mjk1N2YyYWQwNyAxMDA2NDQKLS0tIGEvZG9jL2xpc3ByZWYvZGlzcGxh
eS50ZXhpCisrKyBiL2RvYy9saXNwcmVmL2Rpc3BsYXkudGV4aQpAQCAtMjM1MSw5ICsyMzUx
LDExIEBAIFNpemUgb2YgRGlzcGxheWVkIFRleHQKIG1lYW5pbmcgYXMgd2l0aCBAY29kZXt3
aW5kb3ctdGV4dC1waXhlbC1zaXplfS4KIEBlbmQgZGVmdW4KIAotQGRlZnVuIHN0cmluZy1w
aXhlbC13aWR0aCBzdHJpbmcKK0BkZWZ1biBzdHJpbmctcGl4ZWwtd2lkdGggc3RyaW5nICZv
cHRpb25hbCBidWZmZXIKIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IHVz
ZXMgQGNvZGV7d2luZG93LXRleHQtcGl4ZWwtc2l6ZX0KLXRvIGNvbXB1dGUgdGhlIHdpZHRo
IG9mIEB2YXJ7c3RyaW5nfSAoaW4gcGl4ZWxzKS4KK3RvIGNvbXB1dGUgdGhlIHdpZHRoIG9m
IEB2YXJ7c3RyaW5nfSAoaW4gcGl4ZWxzKS4gIElmIEB2YXJ7YnVmZmVyfSBpcworbm9uLUBj
b2Rle25pbH0sIHVzZSB0aGUgZmFjZSByZW1hcHBpbmdzIGZyb20gdGhhdCBidWZmZXIgd2hl
bgorZGV0ZXJtaW5pbmcgdGhlIHdpZHRoIChAcHhyZWZ7RmFjZSBSZW1hcHBpbmd9KS4KIEBl
bmQgZGVmdW4KIAogQGRlZnVuIGxpbmUtcGl4ZWwtaGVpZ2h0CmRpZmYgLS1naXQgYS9ldGMv
TkVXUyBiL2V0Yy9ORVdTCmluZGV4IGIyZmRiYzRhODhmLi4yN2E0ZmQxMWE4NyAxMDA2NDQK
LS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTU0OSw3ICs1NDksOCBAQCB0ZXh0
IGluIGFueSB3YXkuICBUaGUgZ2xvYmFsIG1pbm9yIG1vZGUKIGJ1ZmZlcnMuCiAKIChUaGlz
IG1pbm9yIG1vZGUgaXMgdGhlICdhZGFwdGl2ZS13cmFwJyBFTFBBIHBhY2thZ2UgcmVuYW1l
ZCBhbmQKLWxpZ2h0bHkgZWRpdGVkIGZvciBpbmNsdXNpb24gaW4gRW1hY3MuKQorZW5oYW5j
ZWQgZm9yIGluY2x1c2lvbiBpbiBFbWFjcy4gIEl0IGFkZGl0aW9uYWxseSBzdXBwb3J0cyBw
cmVmaXhlcyBmb3IKK3ZhcmlhYmxlLXdpZHRoIHRleHQuKQogCiArKysKICoqIE5ldyB1c2Vy
IG9wdGlvbiAnZ3VkLWhpZ2hsaWdodC1jdXJyZW50LWxpbmUnLgpAQCAtMjc4OSw2ICsyNzkw
LDExIEBAIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZSAndXNlci11aWQnIGFuZCAnZ3JvdXAt
Z2lkJywgcmVzcGVjdGl2ZWx5LCBidXQKIGFyZSBhd2FyZSBvZiBmaWxlIG5hbWUgaGFuZGxl
cnMsIHNvIHRoZXkgd2lsbCByZXR1cm4gdGhlIHJlbW90ZSBVSUQgb3IKIEdJRCBmb3IgcmVt
b3RlIGZpbGVzIChvciAtMSBpZiB0aGUgY29ubmVjdGlvbiBoYXMgbm8gYXNzb2NpYXRlZCB1
c2VyKS4KIAorKysrCisqKiAnc3RyaW5nLXBpeGVsLXdpZHRoJyBub3cgYWNjZXB0cyBhIEJV
RkZFUiBhcmd1bWVudC4KK0lmIEJVRkZFUiBpcyBub24tbmlsLCAnc3RyaW5nLXBpeGVsLXdp
ZHRoJyB3aWxsIGFwcGx5IEJVRkZFUidzIGZhY2UKK3JlbWFwcGluZ3Mgd2hlbiBjb21wdXRp
bmcgdGhlIHN0cmluZydzIHdpZHRoLgorCiArKysKICoqICdmc2V0JywgJ2RlZmFsaWFzJyBh
bmQgJ2RlZnZhcmFsaWFzJyBub3cgc2lnbmFsIGFuIGVycm9yIGZvciBjeWNsaWMgYWxpYXNl
cy4KIFByZXZpb3VzbHksICdmc2V0JywgJ2RlZmFsaWFzJyBhbmQgJ2RlZnZhcmFsaWFzJyBj
b3VsZCBiZSBtYWRlIHRvCmRpZmYgLS1naXQgYS9saXNwL2VtYWNzLWxpc3Avc3Vici14LmVs
IGIvbGlzcC9lbWFjcy1saXNwL3N1YnIteC5lbAppbmRleCA2OTliZTc2N2VlNy4uMmNiZTFi
ZWI5ZjEgMTAwNjQ0Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwKKysrIGIvbGlz
cC9lbWFjcy1saXNwL3N1YnIteC5lbApAQCAtMzMzLDggKzMzMywxMCBAQCBuYW1lZC1sZXQK
ICAgICAgIC4gLGFhcmdzKSkpCiAKIDs7OyMjI2F1dG9sb2FkCi0oZGVmdW4gc3RyaW5nLXBp
eGVsLXdpZHRoIChzdHJpbmcpCi0gICJSZXR1cm4gdGhlIHdpZHRoIG9mIFNUUklORyBpbiBw
aXhlbHMuIgorKGRlZnVuIHN0cmluZy1waXhlbC13aWR0aCAoc3RyaW5nICZvcHRpb25hbCBi
dWZmZXIpCisgICJSZXR1cm4gdGhlIHdpZHRoIG9mIFNUUklORyBpbiBwaXhlbHMuCitJZiBC
VUZGRVIgaXMgbm9uLW5pbCwgdXNlIHRoZSBmYWNlIHJlbWFwcGluZ3MgZnJvbSB0aGF0IGJ1
ZmZlciB3aGVuCitkZXRlcm1pbmluZyB0aGUgd2lkdGguIgogICAoZGVjbGFyZSAoaW1wb3J0
YW50LXJldHVybi12YWx1ZSB0KSkKICAgKGlmICh6ZXJvcCAobGVuZ3RoIHN0cmluZykpCiAg
ICAgICAwCkBAIC0zNDgsNiArMzUwLDExIEBAIHN0cmluZy1waXhlbC13aWR0aAogICAgICAg
OzsgRGlzYWJsZSBsaW5lLXByZWZpeCBhbmQgd3JhcC1wcmVmaXgsIGZvciB0aGUgc2FtZSBy
ZWFzb24uCiAgICAgICAoc2V0cSBsaW5lLXByZWZpeCBuaWwKIAkgICAgd3JhcC1wcmVmaXgg
bmlsKQorICAgICAgKGlmIGJ1ZmZlcgorICAgICAgICAgIChzZXRxLWxvY2FsIGZhY2UtcmVt
YXBwaW5nLWFsaXN0CisgICAgICAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZm
ZXIgYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLXJlbWFwcGluZy1hbGlz
dCkpCisgICAgICAgIChraWxsLWxvY2FsLXZhcmlhYmxlICdmYWNlLXJlbWFwcGluZy1hbGlz
dCkpCiAgICAgICAoaW5zZXJ0IChwcm9wZXJ0aXplIHN0cmluZyAnbGluZS1wcmVmaXggbmls
ICd3cmFwLXByZWZpeCBuaWwpKQogICAgICAgKGNhciAoYnVmZmVyLXRleHQtcGl4ZWwtc2l6
ZSBuaWwgbmlsIHQpKSkpKQogCmRpZmYgLS1naXQgYS9saXNwL3Zpc3VhbC13cmFwLmVsIGIv
bGlzcC92aXN1YWwtd3JhcC5lbAppbmRleCBkOTVjZjRiYjU2OS4uMjQxY2QzMzcxNDggMTAw
NjQ0Ci0tLSBhL2xpc3AvdmlzdWFsLXdyYXAuZWwKKysrIGIvbGlzcC92aXN1YWwtd3JhcC5l
bApAQCAtOTcsMzggKzk3LDYwIEBAIHZpc3VhbC13cmFwLS1wcmVmaXgtZmFjZQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmICh2aXN1YWwtd3JhcC0tZmFjZS1leHRl
bmQtcCBmKSBmKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlb2wtZmFjZSkp
KSkpKSkKIAotKGRlZnVuIHZpc3VhbC13cmFwLS1wcmVmaXggKGZjcCkKKyhkZWZ1biB2aXN1
YWwtd3JhcC0tYWRqdXN0LWRpc3BsYXktd2lkdGggKGZjcCBuKQorICAod2hlbi1sZXQgKChk
aXNwbGF5IChnZXQtdGV4dC1wcm9wZXJ0eSAwICdkaXNwbGF5IGZjcCkpCisgICAgICAgICAg
ICAgKChlcSAoY2FyLXNhZmUgZGlzcGxheSkgJ3NwYWNlKSkKKyAgICAgICAgICAgICAod2lk
dGggKGNhciAocGxpc3QtZ2V0IChjZHIgZGlzcGxheSkgOndpZHRoKSkpKQorICAgIChwdXQt
dGV4dC1wcm9wZXJ0eSAwIChsZW5ndGggZmNwKSAnZGlzcGxheQorICAgICAgICAgICAgICAg
ICAgICAgICBgKHNwYWNlIDp3aWR0aCAoLCgrIHdpZHRoIG4pKSkgZmNwKSkKKyAgZmNwKQor
CisoZGVmdW4gdmlzdWFsLXdyYXAtLWV4dHJhLWluZGVudCAoZmNwKQogICAobGV0ICgoZmNw
LWxlbiAoc3RyaW5nLXdpZHRoIGZjcCkpKQogICAgIChjb25kCiAgICAgICgoPSAwIHZpc3Vh
bC13cmFwLWV4dHJhLWluZGVudCkKICAgICAgIGZjcCkKICAgICAgKCg8IDAgdmlzdWFsLXdy
YXAtZXh0cmEtaW5kZW50KQotICAgICAgKGNvbmNhdCBmY3AgKG1ha2Utc3RyaW5nIHZpc3Vh
bC13cmFwLWV4dHJhLWluZGVudCA/XHMpKSkKKyAgICAgIChsZXQqICgoZXh0cmEgKG1ha2Ut
c3RyaW5nIHZpc3VhbC13cmFwLWV4dHJhLWluZGVudCA/XHMpKQorICAgICAgICAgICAgIChy
ZXN1bHQgKGNvbmNhdCBmY3AgZXh0cmEpKSkKKyAgICAgICAgKHZpc3VhbC13cmFwLS1hZGp1
c3QtZGlzcGxheS13aWR0aAorICAgICAgICAgcmVzdWx0IChzdHJpbmctcGl4ZWwtd2lkdGgg
ZXh0cmEgKGN1cnJlbnQtYnVmZmVyKSkpKSkKICAgICAgKCg8IDAgKCsgdmlzdWFsLXdyYXAt
ZXh0cmEtaW5kZW50IGZjcC1sZW4pKQotICAgICAgKHN1YnN0cmluZyBmY3AKLSAgICAgICAg
ICAgICAgICAgMAotICAgICAgICAgICAgICAgICAoKyB2aXN1YWwtd3JhcC1leHRyYS1pbmRl
bnQgZmNwLWxlbikpKQorICAgICAgKGxldCogKChpZHggKCsgdmlzdWFsLXdyYXAtZXh0cmEt
aW5kZW50IGZjcC1sZW4pKQorICAgICAgICAgICAgICh0cmltIChzdWJzdHJpbmcgZmNwIGlk
eCkpCisgICAgICAgICAgICAgKHJlc3VsdCAoc3Vic3RyaW5nIGZjcCAwIGlkeCkpKQorICAg
ICAgICAocmVtb3ZlLXRleHQtcHJvcGVydGllcyAwIChsZW5ndGggdHJpbSkgJyhkaXNwbGF5
KSB0cmltKQorICAgICAgICAodmlzdWFsLXdyYXAtLWFkanVzdC1kaXNwbGF5LXdpZHRoCisg
ICAgICAgICByZXN1bHQgKC0gKHN0cmluZy1waXhlbC13aWR0aCB0cmltIChjdXJyZW50LWJ1
ZmZlcikpKSkpKQogICAgICAodAogICAgICAgIiIpKSkpCiAKKyhkZWZ1biB2aXN1YWwtd3Jh
cC0tY29udGVudC1wcmVmaXggKHBvc2l0aW9uKQorICAiR2V0IHRoZSBjb250ZW50IHByZWZp
eCBmb3IgdGhlIGxpbmUgc3RhcnRpbmcgYXQgUE9TSVRJT04uCitUaGlzIGlzIGxpa2UgYGZp
bGwtY29udGVudC1wcmVmaXgnIGJ1dCBkb2Vzbid0IGNoZWNrIHN1YnNlcXVlbnQgbGluZXMK
K2FuZCB1c2VzIGRpc3BsYXkgc3BlY3MgdG8gaGFuZGxlIHZhcmlhYmxlLXdpZHRoIGZhY2Vz
LiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGdvdG8tY2hhciBwb3NpdGlvbikKKyAgICAo
aWYgKGVvbHApIChmb3J3YXJkLWxpbmUgMSkpCisgICAgOzsgTW92ZSB0byB0aGUgc2Vjb25k
IGxpbmUgdW5sZXNzIHRoZXJlIGlzIGp1c3Qgb25lLgorICAgIChtb3ZlLXRvLWxlZnQtbWFy
Z2luKQorICAgIChsZXQgKChwcmVmaXggKGZpbGwtbWF0Y2gtYWRhcHRpdmUtcHJlZml4KSkp
CisgICAgICAoaWYgKG9yIChhbmQgYWRhcHRpdmUtZmlsbC1maXJzdC1saW5lLXJlZ2V4cAor
CQkgICAoc3RyaW5nLW1hdGNoIGFkYXB0aXZlLWZpbGwtZmlyc3QtbGluZS1yZWdleHAgcHJl
Zml4KSkKKwkgICAgICAoYW5kIGNvbW1lbnQtc3RhcnQtc2tpcAorCQkgICAoc3RyaW5nLW1h
dGNoIGNvbW1lbnQtc3RhcnQtc2tpcCBwcmVmaXgpKSkKKwkgIHByZWZpeAorICAgICAgICAo
cHJvcGVydGl6ZQorICAgICAgICAgKG1ha2Utc3RyaW5nIChzdHJpbmctd2lkdGggcHJlZml4
KSA/XHMpCisgICAgICAgICAnZGlzcGxheSBgKHNwYWNlIDp3aWR0aCAoLChzdHJpbmctcGl4
ZWwtd2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCAo
Y3VycmVudC1idWZmZXIpKSkpKSkpKSkKKwogKGRlZnVuIHZpc3VhbC13cmFwLWZpbGwtY29u
dGV4dC1wcmVmaXggKGJlZyBlbmQpCiAgICJDb21wdXRlIHZpc3VhbCB3cmFwIHByZWZpeCBm
cm9tIHRleHQgYmV0d2VlbiBCRUcgYW5kIEVORC4KLVRoaXMgaXMgbGlrZSBgZmlsbC1jb250
ZXh0LXByZWZpeCcsIGJ1dCB3aXRoIHByZWZpeCBsZW5ndGggYWRqdXN0ZWQKLWJ5IGB2aXN1
YWwtd3JhcC1leHRyYS1pbmRlbnQnLiIKLSAgKGxldCogKChmY3AKLSAgICAgICAgICA7OyBg
ZmlsbC1jb250ZXh0LXByZWZpeCcgaWdub3JlcyBwcmVmaXhlcyB0aGF0IGxvb2sgbGlrZQot
ICAgICAgICAgIDs7IHBhcmFncmFwaCBzdGFydHMsIGluIG9yZGVyIHRvIGF2b2lkIGluYWR2
ZXJ0ZW50bHkKLSAgICAgICAgICA7OyBjcmVhdGluZyBhIG5ldyBwYXJhZ3JhcGggd2hpbGUg
ZmlsbGluZywgYnV0IGhlcmUgd2UncmUKLSAgICAgICAgICA7OyBvbmx5IGRlYWxpbmcgd2l0
aCBzaW5nbGUtbGluZSAicGFyYWdyYXBocyIgYW5kIHdlIGRvbid0Ci0gICAgICAgICAgOzsg
YWN0dWFsbHkgbW9kaWZ5IHRoZSBidWZmZXIsIHNvIHRoaXMgcmVzdHJpY3Rpb24gZG9lc24n
dAotICAgICAgICAgIDs7IG1ha2UgbXVjaCBzZW5zZSAoYW5kIGlzIHBvc2l0aXZlbHkgaGFy
bWZ1bCBpbgotICAgICAgICAgIDs7IHRhc2twYXBlci1tb2RlIHdoZXJlIHBhcmFncmFwaC1z
dGFydCBtYXRjaGVzIGV2ZXJ5dGhpbmcpLgotICAgICAgICAgIChvciAobGV0ICgocGFyYWdy
YXBoLXN0YXJ0IHJlZ2V4cC11bm1hdGNoYWJsZSkpCi0gICAgICAgICAgICAgICAgICAgIChm
aWxsLWNvbnRleHQtcHJlZml4IGJlZyBlbmQpKQotICAgICAgICAgICAgICAgICAgOzsgTm90
ZTogZmlsbC1jb250ZXh0LXByZWZpeCBtYXkgcmV0dXJuIG5pbDsgU2VlOgotICAgICAgICAg
ICAgICAgICAgOzsgaHR0cDovL2FydGljbGUuZ21hbmUub3JnL2dtYW5lLmVtYWNzLmRldmVs
LzE1NjI4NQotICAgICAgICAgICAgICAiIikpCi0gICAgICAgICAocHJlZml4ICh2aXN1YWwt
d3JhcC0tcHJlZml4IGZjcCkpCitUaGlzIGlzIGxpa2UgYGZpbGwtY29udGV4dC1wcmVmaXgn
LCBidXQgc3VwcG9ydGluZyB2YXJpYWJsZS13aWR0aCBmYWNlcworYW5kIHdpdGggdGhlIHBy
ZWZpeCBsZW5ndGggYWRqdXN0ZWQgYnkgYHZpc3VhbC13cmFwLWV4dHJhLWluZGVudCcuIgor
ICAobGV0KiAoKGZjcCAodmlzdWFsLXdyYXAtLWNvbnRlbnQtcHJlZml4IGJlZykpCisgICAg
ICAgICAocHJlZml4ICh2aXN1YWwtd3JhcC0tZXh0cmEtaW5kZW50IGZjcCkpCiAgICAgICAg
ICAoZmFjZSAodmlzdWFsLXdyYXAtLXByZWZpeC1mYWNlIGZjcCBiZWcgZW5kKSkpCiAgICAg
KGlmIGZhY2UKICAgICAgICAgKHByb3BlcnRpemUgcHJlZml4ICdmYWNlIGZhY2UpCkBAIC0x
NjAsNyArMTgyLDggQEAgdmlzdWFsLXdyYXAtcHJlZml4LWZ1bmN0aW9uCiAJIChyZW1vdmUt
dGV4dC1wcm9wZXJ0aWVzCiAJICAwIChsZW5ndGggcGZ4KSAnKHdyYXAtcHJlZml4KSBwZngp
CiAgICAgICAgICAobGV0ICgoZHAgKGdldC10ZXh0LXByb3BlcnR5IDAgJ2Rpc3BsYXkgcGZ4
KSkpCi0gICAgICAgICAgICh3aGVuIChhbmQgZHAgKGVxIGRwIChnZXQtdGV4dC1wcm9wZXJ0
eSAoMS0gbGJwKSAnZGlzcGxheSkpKQorICAgICAgICAgICAod2hlbiAoYW5kIGRwICg+IGxi
cCAocG9pbnQtbWluKSkKKyAgICAgICAgICAgICAgICAgICAgICAoZXEgZHAgKGdldC10ZXh0
LXByb3BlcnR5ICgxLSBsYnApICdkaXNwbGF5KSkpCiAgICAgICAgICAgICAgOzsgVGhlcmUn
cyBhIGBkaXNwbGF5JyBwcm9wZXJ0eSB3aGljaCBjb3ZlcnMgbm90IGp1c3QgdGhlCiAgICAg
ICAgICAgICAgOzsgcHJlZml4IGJ1dCBhbHNvIHRoZSBwcmV2aW91cyBuZXdsaW5lLiAgU28g
aXQncyBub3QKICAgICAgICAgICAgICA7OyBqdXN0IG1ha2luZyB0aGUgcHJlZml4IG1vcmUg
cHJldHR5IGFuZCBjb3VsZCBpbnRlcmZlcmUKQEAgLTE4Nyw4ICsyMTAsMTIgQEAgdmlzdWFs
LXdyYXAtcHJlZml4LW1vZGUKICAgICAgICAgOzsgb2YgdGhlIGhvb2sgKGJ1ZyMxNTE1NSku
CiAgICAgICAgIChhZGQtaG9vayAnaml0LWxvY2stZnVuY3Rpb25zCiAgICAgICAgICAgICAg
ICAgICAjJ3Zpc3VhbC13cmFwLXByZWZpeC1mdW5jdGlvbiAnYXBwZW5kIHQpCi0gICAgICAg
IChqaXQtbG9jay1yZWdpc3RlciAjJ3Zpc3VhbC13cmFwLXByZWZpeC1mdW5jdGlvbikpCisg
ICAgICAgIChqaXQtbG9jay1yZWdpc3RlciAjJ3Zpc3VhbC13cmFwLXByZWZpeC1mdW5jdGlv
bikKKyAgICAgICAgOzsgRklYTUU6IFdoYXQgc2hvdWxkIHdlIGRvIGFib3V0IGBnbG9iYWwt
dGV4dC1zY2FsZS1hZGp1c3QnIG9yCisgICAgICAgIDs7IG90aGVyIHRoaW5ncyB0aGF0IGNh
biBjaGFuZ2UgdGhlIHRleHQgc2l6ZT8KKyAgICAgICAgKGFkZC1ob29rICd0ZXh0LXNjYWxl
LW1vZGUtaG9vayAjJ2ppdC1sb2NrLXJlZm9udGlmeSBuaWwgdCkpCiAgICAgKGppdC1sb2Nr
LXVucmVnaXN0ZXIgIyd2aXN1YWwtd3JhcC1wcmVmaXgtZnVuY3Rpb24pCisgICAgKHJlbW92
ZS1ob29rICd0ZXh0LXNjYWxlLW1vZGUtaG9vayAjJ2ppdC1sb2NrLXJlZm9udGlmeSkKICAg
ICAod2l0aC1zaWxlbnQtbW9kaWZpY2F0aW9ucwogICAgICAgKHNhdmUtcmVzdHJpY3Rpb24K
ICAgICAgICAgKHdpZGVuKQotLSAKMi4yNS4xCgo=

--------------1ABD0qXctHlxJqSTmVRggRBy--




Message sent:


Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Mailer: MIME-tools 5.505 (Entity 5.505)
Content-Type: text/plain; charset=utf-8
X-Loop: help-debbugs@HIDDEN
From: help-debbugs@HIDDEN (GNU bug Tracking System)
To: Jim Porter <jporterbugs@HIDDEN>
Subject: bug#71605: Acknowledgement (30.0.50; [PATCH] Support
 variable-width text in 'visual-wrap-prefix-mode')
Message-ID: <handler.71605.B.17185930149233.ack <at> debbugs.gnu.org>
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
X-Gnu-PR-Message: ack 71605
X-Gnu-PR-Package: emacs
X-Gnu-PR-Keywords: patch
Reply-To: 71605 <at> debbugs.gnu.org
Date: Mon, 17 Jun 2024 02:57:02 +0000

Thank you for filing a new bug report with debbugs.gnu.org.

This is an automatically generated reply to let you know your message
has been received.

Your message is being forwarded to the package maintainers and other
interested parties for their attention; they will reply in due course.

Your message has been sent to the package maintainer(s):
 bug-gnu-emacs@HIDDEN

If you wish to submit further information on this problem, please
send it to 71605 <at> debbugs.gnu.org.

Please do not send mail to help-debbugs@HIDDEN unless you wish
to report a problem with the Bug-tracking system.

--=20
71605: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D71605
GNU Bug Tracking System
Contact help-debbugs@HIDDEN with problems


Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 17 Jun 2024 11:38:01 +0000
Resent-Message-ID: <handler.71605.B71605.17186242788446 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Jim Porter <jporterbugs@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.17186242788446
          (code B ref 71605); Mon, 17 Jun 2024 11:38:01 +0000
Received: (at 71605) by debbugs.gnu.org; 17 Jun 2024 11:37:58 +0000
Received: from localhost ([127.0.0.1]:60392 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJAgQ-0002C7-2X
	for submit <at> debbugs.gnu.org; Mon, 17 Jun 2024 07:37:58 -0400
Received: from eggs.gnu.org ([209.51.188.92]:46710)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1sJAgM-0002Bq-UN
 for 71605 <at> debbugs.gnu.org; Mon, 17 Jun 2024 07:37:56 -0400
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 1sJAgF-0005BD-9f; Mon, 17 Jun 2024 07:37:47 -0400
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=0jr1pMOUB6MVpeJFxK8OpKljSE6c2aOOy79CdTZkDDo=; b=DyGQbEhXMJxJ
 jOrOqxrQMVyhkrpsVMIPcFG9fWJzue/D09JiGSGUCJxrh6sSE0lniWWDeunBsGjcIePOKepSwZ4CM
 uVFgANLj5LJmacwsZd+q3BRPPHFn03fD1cXn4i3UZbS0gkY7N9cUV7s2PzHrtCMd5XHP7LK6EFW8J
 MvIl6V2JkrWmIpDM6O4cuINHU28yeuAKEs1QiNFvLtD+O8qG84DAD3+9tjPPBXejF8hw8+06NYKp0
 VAmy8cJ0g1nNNDd7Cp4ATEPdvO42mnn/FUqeA81nUSboHiUqu+LjQVblZp9E26YPW5PpYm95iO6Po
 mxgrqk1OBnhRSfnbnYf09g==;
Date: Mon, 17 Jun 2024 14:37:43 +0300
Message-Id: <868qz3ssu0.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN> (message from
 Jim Porter on Sun, 16 Jun 2024 19:56:44 -0700)
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
X-Spam-Score: -2.3 (--)
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: Sun, 16 Jun 2024 19:56:44 -0700
> From: Jim Porter <jporterbugs@HIDDEN>
> 
> (Note: I plan to merge this only after we cut the Emacs 30 release 
> branch, since it seems a bit too substantial a change to sneak in right 
> near the end. However, I think the patch is mostly done aside from one 
> remaining issue, so any feedback is very welcome.)

OK.

> 'visual-wrap-prefix-mode' has one small issue: since the wrap prefix is 
> just a string, the wrapped text may not line up for variable-width 
> fonts. This is mainly in cases like so:
> 
>    * here is some text that
>      got visually wrapped
> 
> If the "* " is variable-width, the second line will probably be indented 
> wrong by a few pixels.

It also means the line after "*", the one that begins with "here is",
will also move horizontally.  Isn't that a misfeature?  Perhaps this
mode should align the text to some fixed pixel-coordinate, in which
case changes in font should not matter?  Or am I missing something?

> The attached patch adds a display spec in this case so that the text 
> lines up perfectly.

Can you explain the idea of the patch?  I don't think I understand why
you use '(space :width)' rather than '(space :align-to)'.

> There's currently one problem though: I'm not sure 
> how to regenerate the wrap prefix automatically if the face changes. 
> It's not hard to handle for 'text-scale-adjust', but I don't know how to 
> handle 'global-text-scale-adjust' (or other things that could change the 
> face[1]).
> 
> Does anyone have any ideas for this part?

Perhaps we could provide a function "face-change (&optional frame)"
which would access the frame's face_change flag and the global
face_change flag.  Then you could test those in a post-command-hook or
somesuch.  (However, using :align-to, if feasible, sounds like a
better solution to me.)

> -@defun string-pixel-width string
> +@defun string-pixel-width string &optional buffer
>  This is a convenience function that uses @code{window-text-pixel-size}
> -to compute the width of @var{string} (in pixels).
> +to compute the width of @var{string} (in pixels).  If @var{buffer} is
> +non-@code{nil}, use the face remappings from that buffer when
> +determining the width (@pxref{Face Remapping}).

An alternative would be to provide a face to use.

In any case, using BUFFER only for face-remapping-alist is only a
small part of what a buffer can do to a string: there's the major mode
with its fontifications and whatnot.

> +(defun string-pixel-width (string &optional buffer)
> +  "Return the width of STRING in pixels.
> +If BUFFER is non-nil, use the face remappings from that buffer when
> +determining the width."
>    (declare (important-return-value t))
>    (if (zerop (length string))
>        0
> @@ -348,6 +350,11 @@ string-pixel-width
>        ;; Disable line-prefix and wrap-prefix, for the same reason.
>        (setq line-prefix nil
>  	    wrap-prefix nil)
> +      (if buffer
          ^^^^^^^^^
This should test buffer-live-p, I think, not just buffer non-nil.

> +(defun visual-wrap--adjust-display-width (fcp n)
> +  (when-let ((display (get-text-property 0 'display fcp))
> +             ((eq (car-safe display) 'space))

Doesn't this only work with very simple 'display' specs?  The 'space'
part could be in some place deep in the spec, not just the second
symbol.

>  (defun visual-wrap-fill-context-prefix (beg end)
>    "Compute visual wrap prefix from text between BEG and END.
> -This is like `fill-context-prefix', but with prefix length adjusted
> -by `visual-wrap-extra-indent'."
> -  (let* ((fcp
> -          ;; `fill-context-prefix' ignores prefixes that look like
> -          ;; paragraph starts, in order to avoid inadvertently
> -          ;; creating a new paragraph while filling, but here we're
> -          ;; only dealing with single-line "paragraphs" and we don't
> -          ;; actually modify the buffer, so this restriction doesn't
> -          ;; make much sense (and is positively harmful in
> -          ;; taskpaper-mode where paragraph-start matches everything).
> -          (or (let ((paragraph-start regexp-unmatchable))
> -                    (fill-context-prefix beg end))
> -                  ;; Note: fill-context-prefix may return nil; See:
> -                  ;; http://article.gmane.org/gmane.emacs.devel/156285
> -              ""))

The comment above and the URL it included are deleted: is that because
they are no longer relevant?  If not, maybe move them with the code,
so that the information is not lost.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Po Lu <luangruo@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 17 Jun 2024 14:24:02 +0000
Resent-Message-ID: <handler.71605.B71605.171863418528700 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Jim Porter <jporterbugs@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.171863418528700
          (code B ref 71605); Mon, 17 Jun 2024 14:24:02 +0000
Received: (at 71605) by debbugs.gnu.org; 17 Jun 2024 14:23:05 +0000
Received: from localhost ([127.0.0.1]:34819 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJDGD-0007Sq-8Q
	for submit <at> debbugs.gnu.org; Mon, 17 Jun 2024 10:23:05 -0400
Received: from sonic305-21.consmr.mail.ne1.yahoo.com ([66.163.185.147]:42020)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <luangruo@HIDDEN>) id 1sJDG9-0007S3-VA
 for 71605 <at> debbugs.gnu.org; Mon, 17 Jun 2024 10:23:03 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048;
 t=1718634171; bh=+nlvkuKd23bBFYJ5AtUgpSjsEyFqX5taL9m7oNROqeI=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From:Subject:Reply-To;
 b=sTA2GnOBfamkE3T1a9ggSehQUlDyaiAUVz4C0dBO7njVFAu5Y+SIh/Nx9S7F9JMZ1fDnbmfTDW6HPsPXf23ld45iTW8DS1vaG+DfGUYj1nJnUiEGcAApwmCxWsI8zr2Gq3IzuGuZ5doR+753hDyZuTL8LFBXNztjkkTdmRDM8uijE/nTRzpGWaNOgybUmTgW+0n7DjmmYMRc9L/ASvUA2l/4fBL43EVJ7R1QH1/Fzskph1wCiELeFGhd9qEhHVJaszRqOCdtSY62AgAfja6eqviNcQAIaBT5kb27tJVg3crSdv4Jg866zYwsbHhqmDL0EK5smfadUwI4KXqxX+1YNg==
X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048;
 t=1718634171; bh=j3fUQ7HztLrhKyP6UV+EsKNB25kWlftPgdstjIPraj0=;
 h=X-Sonic-MF:From:To:Subject:Date:From:Subject;
 b=mkgLLzo/VxZRVziqrkOfr4TUQmSsHzuovSP58DtaZQJSOX4v43MOa1A7Y07bdc4QJJSoEoGTp5DUucy7aPKNTb3vRYazoXLcy2ObWGVCNeisoAw512jg7501CgWD2h6PAm5e24EJAo4qhgIOJNGKf3ed6phd+mP/RTEe8O8V1su6OZTElmolg/gKvvrMyhDaq9WiYSCj9OebSaVb2+dHYRWwGp1ZBq0X/vJ84a2MS1PbySGHfF5n8CxWT5skdN+ZiobDrY3kvst1gj4Tf3zuqnubDDWEiamKsuD+6gKHa9p7rIHr85hz42mqrq+dTo7YYq8x2YP1WJSOXPj+m2rTBw==
X-YMail-OSG: 0uNetCgVM1m0E8TxcT8ctM4BAW.A2Rn5IR6q7agRZpZYWdVHOkP59Jztx9vw1Ln
 urdv2g.PJuMKqdck_cRf93A5qjKAIdiR4NJ0K8tRnUxqUTYYM0ERe94uiYwGmB1wzc.4WVy8Wy_i
 0u2GIU3RIqJ4YX67tfaQLi3f7kfB0rGJJfdIJWsA62uPAOE_VpPg.PWDzCOLvUAtN_zrZtrVGH3A
 YDaUlTWDvfC61T6PyD2mPntDewcxgdZmNVnlg5AT05Q543r1m2KaPNn.K0Cq2r36H_FSOxOIrtP3
 6FDI8IxUCa4IP.kG5kUKCvX9aOBuwyVIrIyKuc_9RvOm487K6uG9eagaoBHARFwH9aUe_cJSNaS8
 OuvpVyJlfx8YeGj50j1KiFYU1w4b1Y58mY6J5wmyc5QnZ9UAskZkQABXUaq_yxu6K2CgtmWdulBy
 W800VErlme_WRkIApePH5BU6euV2hS1CJH6t2L2vC25FY7l7MUbO8mF.sPEuvvMDUMITfdNJsGJi
 38vY1HDXTpnQVzs_aUFcXc93Vxx_aiqgOLTsqp5b2LE.ybIENd.FAL5kKBySUzdmbUEbA_WJ0_NM
 K4IrwzFOsucWlA_IY9kRkz0A3WGABfjxQ6vPl3tjOEWva3Q5DAZxu6y.kTWolEHHpGb28CeX4BXl
 daN04RPvM9f2mkIjfrmMs187CmwowoiwjGmMksSvUiEEgqBmJwJuoXUucejRZp.hUox76.YezLas
 Cmj43pZXPmuD10JHCZcuhrHuW0FifwzuWqpIQcKPaumweYRB6i9qDfX_4f_SfLIuetVuvzlRAi9M
 gKQK1zEWWq9r9zHn9OKw16CSGWmJ0RUvx0xL4sfsh_HcDLiNpePAfCc04LQimfO0OTwyz_SvX6tH
 VO7Dzm5UnOTWm7bWBP_jgJJ4nfAd9leA.DrCndVdt4rHEblSFbJy7BV981b8LVd1W6eLahpo08u7
 vHle1307EiahkQvkq1KXCoOdewbXXgA5Nf4EqD5pJts9igfQFijQ0vl_ugIYA.r2tU48bti9xjdx
 POEhku30bn_51L5D5j8N1XGGqk0z55OmOaqlAf8bXxJhgtogymI_E5XrAsR8POh0CKYSA2YHqWiJ
 sI4XjuFxJK76fFg8fDRm8uD_sOxcYiQXOmw1Isy9xQbuR91ThQheuKwa02yzWnXDkj7_lH2DidVO
 ME0TJFd50Sftk1Gma0wcAu2DBJc3onAQ5uA3p4UcD.Xsq2de8r67D8.8MbSmBZ1_nUg0_H78kF.3
 vhxa3al0OEtFOro29JgJtSi867WCnz4l7DL9RKQMOwaNyERjlIfm9WV_pdkmUwg3G1vZZbpI0ZCz
 48unikpH1n_LeXjxP2YcvliUH5vWhvIKNdSCiCFzru9NtIujTtU7kYUtr5lOVThjrbO3sC3pH2iM
 ox5lxHp7Hbs6HIxN1F7Lvw0gMREJ0o_N7Y9SxCGYuA1rLgueYX3LD.GYS49lQKlq6sW69TbQSs7r
 KmI2eVKzqBAcArktG9sK4yY7oKktMH.XABz48yHfVHAR4Gzuf6ZOhFiLj6OuVP2q2oX2INi_hA5_
 Be6MhIlLyodCsvzSEJeqDeK9jUUtmYcZm8e4TNLa2xHW_ctLkl.tfXJPVLyaW4kSWjTVNTIUSs_T
 3rllamSUn5eRLKLT.P2MvZ6jnTIRZXdpQTcV3wt_CxtasecYr0HoAIRJXMfnNK5rZX8iKg1wk.Hu
 IqF1tbbEVE3iOpctTdYeDMScYtcRkRljKh1iNm6kpaGzV.Gu0HlN6UogdBEOWHxmS3jNoKfhK7gy
 ui9IVY6ar58dccOE.ryT9N0FUR2RyItbodVp.ca9Md_t6Y6S6k_bS.mkLNXtx_bJXpfxjn9OIhlu
 YaDLP1DaXJ_iOvsdbd7oyP0QlW7qFSFXP8K1v3jUer.OUyWbvLtt3FoCruY4va6lCwfRxboEh1vD
 cpSkvJ.UeU3FhTl3cQZV7H.GRB2Hd_stwoQbGEx9JQax.i3lmSnrVuzOXm_DsivFtH16BiWPTYw7
 5jIWDDU34RnPWFysIdf8.DhPONFIn09QfaclcTuEKri9pB5lC_BflEk39MpWNsB7zZ1CSawVkyb2
 5aC.wjezLnDETeXc2ppD9jrcAk1Tot8Cd03kXO3RkQUO.4daRMwnXq6Kc74YYnO.hwUKfQXxyIrV
 YYrfzdjFuijLVQZXjzQqYygjaVvnZgIRhKhdtOPqqjwZ1ebkAfNvY1fEyyhvTILC2CvAPd1yuY60
 NlcWejwJE6UFcU_gaOwj5ZEPyeA--
X-Sonic-MF: <luangruo@HIDDEN>
X-Sonic-ID: 01ece84a-6b95-4c3e-b73b-e9bf5d88d8c2
Received: from sonic.gate.mail.ne1.yahoo.com by
 sonic305.consmr.mail.ne1.yahoo.com with HTTP; Mon, 17 Jun 2024 14:22:51 +0000
Received: by hermes--production-sg3-7b469d9f6-d5m7f (Yahoo Inc. Hermes SMTP
 Server) with ESMTPA ID 3face74ae25bb39a71530b1ae57ab5f4; 
 Mon, 17 Jun 2024 14:22:49 +0000 (UTC)
From: Po Lu <luangruo@HIDDEN>
In-Reply-To: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN> (Jim Porter's
 message of "Sun, 16 Jun 2024 19:56:44 -0700")
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
Date: Mon, 17 Jun 2024 22:23:01 +0800
Message-ID: <s54cyof3ayi.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Mailer: WebService/1.1.22407
 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo
Content-Length: 1615
X-Spam-Score: -0.0 (/)
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 (-)

Jim Porter <jporterbugs@HIDDEN> writes:

> (Note: I plan to merge this only after we cut the Emacs 30 release
> branch, since it seems a bit too substantial a change to sneak in
> right near the end. However, I think the patch is mostly done aside
> from one remaining issue, so any feedback is very welcome.)
>
> 'visual-wrap-prefix-mode' has one small issue: since the wrap prefix
> is just a string, the wrapped text may not line up for variable-width
> fonts. This is mainly in cases like so:
>
>   * here is some text that
>     got visually wrapped
>
> If the "* " is variable-width, the second line will probably be
> indented wrong by a few pixels.
>
> The attached patch adds a display spec in this case so that the text
> lines up perfectly. There's currently one problem though: I'm not sure
> how to regenerate the wrap prefix automatically if the face
> changes. It's not hard to handle for 'text-scale-adjust', but I don't

Actually, there's more than just this one problem.  To start with, the
existing format of the generated line prefix properties enables the
extracted fill prefix to be displayed consistently on any frame,
whatever the metrics of its default font/face.  This I consider a far
more critical capability than perfect alignment of wrapped text in the
presence of a variable-pitch default font, as the latter is virtually
unknown among programmers, and also unimplementable within reasonable
standards of performance with pixelwise spacers.  If this is to be
installed, please condition it behind a user option and restore the
existing logic that you have effaced as the default.





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Jim Porter <jporterbugs@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 17 Jun 2024 16:15:02 +0000
Resent-Message-ID: <handler.71605.B71605.17186408877641 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Po Lu <luangruo@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.17186408877641
          (code B ref 71605); Mon, 17 Jun 2024 16:15:02 +0000
Received: (at 71605) by debbugs.gnu.org; 17 Jun 2024 16:14:47 +0000
Received: from localhost ([127.0.0.1]:35195 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJF0J-0001z9-9X
	for submit <at> debbugs.gnu.org; Mon, 17 Jun 2024 12:14:47 -0400
Received: from mail-pf1-f172.google.com ([209.85.210.172]:61506)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <jporterbugs@HIDDEN>) id 1sJF0H-0001yx-5l
 for 71605 <at> debbugs.gnu.org; Mon, 17 Jun 2024 12:14:46 -0400
Received: by mail-pf1-f172.google.com with SMTP id
 d2e1a72fcca58-70599522368so3121810b3a.2
 for <71605 <at> debbugs.gnu.org>; Mon, 17 Jun 2024 09:14:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1718640817; x=1719245617; darn=debbugs.gnu.org;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:mime-version:date:message-id:from:to:cc
 :subject:date:message-id:reply-to;
 bh=1U0NUEFuXZtovnpCo8hbrQNdkx9N2Csp6QmC9+qICI0=;
 b=OqpbDN7nnQhnstErDKxXr4Lgmhejyq6ZWZFxJjnl7fs3LrB3iiC5wMED7hhZUlkvEH
 hh2w8U4YAibEW61kAc35f0aXNQnAg90lKE8rZvt811kyogke/pk2IrzGTNmLWNDtZd2C
 WdYdqE0No+ENJnl/iYzfLhNA1Oi0fweC9B6m12sV5AhCk6peAVnMu6AE2U481lFqC83C
 YG1rkpzsBuL+6f4n4GQE9vWGA4y8bBYTcaork7De1G4s0RAD3P30+m4JfcxHihv8YzxF
 sWeYtzp5QpngjJBcQs2dxl/ipKMAwfYjRXdr2WbB60Gs/4VfsKYTIestd/1TpfZUF2CP
 WeFA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1718640817; x=1719245617;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:mime-version:date:message-id
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=1U0NUEFuXZtovnpCo8hbrQNdkx9N2Csp6QmC9+qICI0=;
 b=BaSQ9TiTyeNfuJz5vqQhmZZ9J7oth2HHuXsoQtjrW+t4Hfg+Cksg5u+a4XgzNVxnxw
 l6sL8xc6ECGhsmXvVU5dZ2AUxxwcg7iJmwR0cAQy+lID+d9ScefBnQ5dHXwmi5/BEi+i
 8HHj75yWVWiyPl7sLDH9gJXYTu0WcnYZA+WJvAnAY+ZZcBuFqSL0SCjzqMAO6Ux2bHQo
 g1tCQH4/a0rQ4rJNZnOVpEwds18nwCvqxp78R04Tt0vIG8/DAcrCQKQ5c4X/9szIByTq
 Sjv1QD7I0U+DuquMWRO9p4BubdlFPif+b1XYrHy+U/T7tSixLjSGSHZP/M7pGtmj2slN
 PJqQ==
X-Gm-Message-State: AOJu0YyTUXmhT9u0CQ5N8Rc3tUGf7wk7RXiTKCg/NuMpTDzwcLKqPlBJ
 BvI/iLpXKAF1NOUBZD7WizCZ5lyYLH4cROz083aNLbfp3HIQR+RI
X-Google-Smtp-Source: AGHT+IEgpjWOs7G9mciqt8UD5YSETIaxDwQ0eDVFxm9PeIsYuC1XX6qlIR9ja1olvmqzwabcUg/5yw==
X-Received: by 2002:a05:6a20:8404:b0:1b8:b517:9bf9 with SMTP id
 adf61e73a8af0-1bae7ebacc5mr9636110637.25.1718640817178; 
 Mon, 17 Jun 2024 09:13:37 -0700 (PDT)
Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com.
 [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id
 d2e1a72fcca58-705cc97fd59sm7515978b3a.84.2024.06.17.09.13.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 17 Jun 2024 09:13:36 -0700 (PDT)
Message-ID: <835c7897-d276-b0fe-6d1e-8e6a20cac2bb@HIDDEN>
Date: Mon, 17 Jun 2024 09:13:38 -0700
MIME-Version: 1.0
Content-Language: en-US
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <s54cyof3ayi.fsf@HIDDEN>
From: Jim Porter <jporterbugs@HIDDEN>
In-Reply-To: <s54cyof3ayi.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.0 (/)
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 (-)

On 6/17/2024 7:23 AM, Po Lu via Bug reports for GNU Emacs, the Swiss 
army knife of text editors wrote:
> Actually, there's more than just this one problem.  To start with, the
> existing format of the generated line prefix properties enables the
> extracted fill prefix to be displayed consistently on any frame,
> whatever the metrics of its default font/face.  This I consider a far
> more critical capability than perfect alignment of wrapped text in the
> presence of a variable-pitch default font, as the latter is virtually
> unknown among programmers, and also unimplementable within reasonable
> standards of performance with pixelwise spacers.

That's a good point. In practice, we should only do this if the 
first-line prefix uses a variable-pitch font, since otherwise we might 
as well just use the requisite number of space characters as before, 
sans display-spec.

> If this is to be
> installed, please condition it behind a user option and restore the
> existing logic that you have effaced as the default.

I'll add a check for variable-pitch fonts and a user option. With the 
variable-pitch check, I think it should be ok for the user option to 
default to enabling this new behavior? For fixed-pitch fonts, the new 
code would behave the same as before regardless of the option.

Note that I haven't removed any of the old logic though; it's all there 
as before, since the space characters are useful for terminals (where 
the pixelwise :width display-spec doesn't do anything for us, if I 
understand correctly). I did extract parts of 'fill-content-prefix' into 
'visual-wrap--content-prefix', but the only parts I removed were the 
ones for handling multiple lines; those don't apply here, since 
'visual-wrap-prefix-function' gets the prefixes one line at a time.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Jim Porter <jporterbugs@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 17 Jun 2024 17:45:02 +0000
Resent-Message-ID: <handler.71605.B71605.171864624827279 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.171864624827279
          (code B ref 71605); Mon, 17 Jun 2024 17:45:02 +0000
Received: (at 71605) by debbugs.gnu.org; 17 Jun 2024 17:44:08 +0000
Received: from localhost ([127.0.0.1]:35297 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJGOk-00075u-UX
	for submit <at> debbugs.gnu.org; Mon, 17 Jun 2024 13:44:07 -0400
Received: from mail-pl1-f182.google.com ([209.85.214.182]:51224)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <jporterbugs@HIDDEN>) id 1sJGOi-00075G-01
 for 71605 <at> debbugs.gnu.org; Mon, 17 Jun 2024 13:44:05 -0400
Received: by mail-pl1-f182.google.com with SMTP id
 d9443c01a7336-1f6da06ba24so39035235ad.2
 for <71605 <at> debbugs.gnu.org>; Mon, 17 Jun 2024 10:44:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1718646176; x=1719250976; darn=debbugs.gnu.org;
 h=in-reply-to:from:references:cc:to:content-language:subject
 :mime-version:date:message-id:from:to:cc:subject:date:message-id
 :reply-to; bh=NEIPR9v+T221y8H8QwnVEZatrlOxRkdsm8bCwP+DwvE=;
 b=U4opmeAXKvug3ED0QL54FVq5wAzmCFxzSwyz74dRJB07yhDsD3uj8Y1voE6P++kvAT
 hMG2gamU5rEx7zkEUhQX7EXaGN4Xml6T+ILKUnaR7FyTaObU76kAP/bMPokxF5UPCY08
 WvTKtIrrY5w2xxL71vQkY4HZvnA6OjU1ebLyi7e/kuCMUPPXRFdoTz4iiRcFxpJg0d5U
 LTB3g1GBrWbkAeiX4HAiIiFZBl4IS2wVbvXWDbii3PcsurfV+waQegxJO4wMOloaz+Rp
 fFBnr9xUze9XAXO4kDukfwguGxblganxOioBGognVwJQjidXgFtDnEm72OTxf+ZbGZ9e
 u/1Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1718646176; x=1719250976;
 h=in-reply-to:from:references:cc:to:content-language:subject
 :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject
 :date:message-id:reply-to;
 bh=NEIPR9v+T221y8H8QwnVEZatrlOxRkdsm8bCwP+DwvE=;
 b=TTF+6fNydIi1mkYb/bocwts/rudW3fLi9zZAndUs+Z3E5iACyuIO9xn2bhDNB/kIdo
 Ky2DTBCU79C/zG6I/Gi/3doDAHDSf5WZdgE62GpTDj+Kja2fljaV3ZOqWqt9EwjoG87m
 UZk6MdlaAGANMlWlx60AO0IoGExPjtVVm8mqJOmiz5gnvk0TORNCKudi1txHTX8OgaNg
 GTIrmaQIgodVe3cp9RFumJhUBBFGN4S5pJ+6LWfizCblGTyk+0+0FmTZwokJ5e8Eo33a
 oL3oL5MSwz93IlB9CXePLKn/162VTm0/Tq7sRqUTa0khsCX0D8ihhBuDG5YroiXJUm3u
 8skQ==
X-Gm-Message-State: AOJu0YydMi/7pcwIJ4VV1btr5H+oNZR/WDLNmBcTtXrGyVFIfD+ThsMv
 gZDrDsfL/wNujHJnQ1I4LT0PtaLTKVeGpJ4Z6jJDdmV3/odsm8aN
X-Google-Smtp-Source: AGHT+IEIhTaCHyEjVUvpc04PSXuaZy+B5ee0nC0+FFCM1cqozqfDINwHd7D6F+SV1L4ewn2gi5PDCQ==
X-Received: by 2002:a17:902:db04:b0:1f6:ff48:1cdb with SMTP id
 d9443c01a7336-1f8629006fbmr126005715ad.52.1718646175367; 
 Mon, 17 Jun 2024 10:42:55 -0700 (PDT)
Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com.
 [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id
 d9443c01a7336-1f855ee808bsm81559445ad.142.2024.06.17.10.42.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 17 Jun 2024 10:42:54 -0700 (PDT)
Content-Type: multipart/mixed; boundary="------------fiT0Rab0roZKyB3qsvnzQXTk"
Message-ID: <201c2285-012f-fa29-03b5-78a2e26aa134@HIDDEN>
Date: Mon, 17 Jun 2024 10:42:56 -0700
MIME-Version: 1.0
Content-Language: en-US
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <868qz3ssu0.fsf@HIDDEN>
From: Jim Porter <jporterbugs@HIDDEN>
In-Reply-To: <868qz3ssu0.fsf@HIDDEN>
X-Spam-Score: -0.0 (/)
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.
--------------fiT0Rab0roZKyB3qsvnzQXTk
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 6/17/2024 4:37 AM, Eli Zaretskii wrote:
>> Date: Sun, 16 Jun 2024 19:56:44 -0700
>> From: Jim Porter <jporterbugs@HIDDEN>
>> The attached patch adds a display spec in this case so that the text
>> lines up perfectly.
> 
> Can you explain the idea of the patch?  I don't think I understand why
> you use '(space :width)' rather than '(space :align-to)'.

I tried using :align-to, and it doesn't seem to take effect for the 
'wrap-prefix' text property. I haven't looked closely at why that 
doesn't work, but even if it did, I think it might make things more 
complex than they already are.

I'll try to describe the current process:

1. 'visual-wrap-prefix-mode' goes a line at a time, finding the 
first-line prefix (for a bulleted item, this is something like "* ").
2. Then it constructs the wrap-prefix string (for a bulleted item, 
something like "  "; for other items it might be the same as the 
first-line prefix).
3. Finally, it applies the the wrap-prefix to the entire line it's 
examining.

The problem comes up for variable-pitch fonts, where "* " and "  " have 
different pixel widths. Before my patch, this results in the second line 
not lining up correctly. See the attached image for an example.

My patch just sets a display-spec on the "  " to make it have the same 
pixel-width as "* ". Then it all lines up.

If I understand your :align-to suggestion, setting :align-to on 
everything after the "* " bullet could work in theory, but I don't know 
what value you could set there to make everything correct. If it's a 
fixed number of pixels, then scaling up the text could mean the "* " 
becomes too wide for the space we reserved for it, and then things would 
probably look wrong. If it's based on the canonical character width, 
that might work so long as that updates when needed, but it might still 
look off depending on how the canonical width and the pixel width 
compare. (Ideally, we'd align to the exact pixel-width of "* " or 
whatever the first-line prefix is.) I couldn't get :align-to to work in 
the first place though so this is all hypothetical...

>> There's currently one problem though: I'm not sure
>> how to regenerate the wrap prefix automatically if the face changes.
>> It's not hard to handle for 'text-scale-adjust', but I don't know how to
>> handle 'global-text-scale-adjust' (or other things that could change the
>> face[1]).
>>
>> Does anyone have any ideas for this part?
> 
> Perhaps we could provide a function "face-change (&optional frame)"
> which would access the frame's face_change flag and the global
> face_change flag.  Then you could test those in a post-command-hook or
> somesuch.  (However, using :align-to, if feasible, sounds like a
> better solution to me.)

The 'face-change' idea could work, or here's another possibility: what 
about using :relative-width? If I set that correctly, then the 
pixel-size should adjust as the text scales. It wouldn't handle the case 
where the actual font changes though. It would also have some loss of 
precision, but I tested out a hacky patch using :relative-width and it 
looks good in practice.

>> -@defun string-pixel-width string
>> +@defun string-pixel-width string &optional buffer
>>   This is a convenience function that uses @code{window-text-pixel-size}
>> -to compute the width of @var{string} (in pixels).
>> +to compute the width of @var{string} (in pixels).  If @var{buffer} is
>> +non-@code{nil}, use the face remappings from that buffer when
>> +determining the width (@pxref{Face Remapping}).
> 
> An alternative would be to provide a face to use.
> 
> In any case, using BUFFER only for face-remapping-alist is only a
> small part of what a buffer can do to a string: there's the major mode
> with its fontifications and whatnot.

Yeah, I'm not entirely happy with this BUFFER argument either. I don't 
think we need to worry about fontification in this case though, since 
you can pass in a fontified string.

Maybe this should take the face-remapping-alist directly? Or maybe we 
should pass in a window? The latter might be better for handling things 
like frame-specific font settings. (Although as Po Lu points out, 
frame-specific fonts are challenging to handle correctly here.)

>> +(defun visual-wrap--adjust-display-width (fcp n)
>> +  (when-let ((display (get-text-property 0 'display fcp))
>> +             ((eq (car-safe display) 'space))
> 
> Doesn't this only work with very simple 'display' specs?  The 'space'
> part could be in some place deep in the spec, not just the second
> symbol.

Yeah, though the FCP argument is always the prefix we constructed, so we 
know what the display-spec looks like if it's present. The extra checks 
are just my natural paranoia. I've added a comment here explaining though.

>>   (defun visual-wrap-fill-context-prefix (beg end)
>>     "Compute visual wrap prefix from text between BEG and END.
>> -This is like `fill-context-prefix', but with prefix length adjusted
>> -by `visual-wrap-extra-indent'."
>> -  (let* ((fcp
>> -          ;; `fill-context-prefix' ignores prefixes that look like
>> -          ;; paragraph starts, in order to avoid inadvertently
>> -          ;; creating a new paragraph while filling, but here we're
>> -          ;; only dealing with single-line "paragraphs" and we don't
>> -          ;; actually modify the buffer, so this restriction doesn't
>> -          ;; make much sense (and is positively harmful in
>> -          ;; taskpaper-mode where paragraph-start matches everything).
>> -          (or (let ((paragraph-start regexp-unmatchable))
>> -                    (fill-context-prefix beg end))
>> -                  ;; Note: fill-context-prefix may return nil; See:
>> -                  ;; http://article.gmane.org/gmane.emacs.devel/156285
>> -              ""))
> 
> The comment above and the URL it included are deleted: is that because
> they are no longer relevant?  If not, maybe move them with the code,
> so that the information is not lost.

Correct, they're no longer relevant. I extracted the logic that we need 
out of 'fill-content-prefix' and into 'visual-wrap--content-prefix'. The 
former didn't behave quite the way we wanted (hence all the comments), 
and it made handling the display-spec parts of my patch even harder, so 
I just took the relevant logic out and made a function that does exactly 
what we want. I've added more detail to the commit message explaining 
the change.
--------------fiT0Rab0roZKyB3qsvnzQXTk
Content-Type: image/png; name="misaligned.png"
Content-Disposition: attachment; filename="misaligned.png"
Content-Transfer-Encoding: base64

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
--------------fiT0Rab0roZKyB3qsvnzQXTk
Content-Type: text/plain; charset=UTF-8;
 name="0001-Add-support-for-variable-width-text-in-visual-wrap-p.patch"
Content-Disposition: attachment;
 filename*0="0001-Add-support-for-variable-width-text-in-visual-wrap-p.pa";
 filename*1="tch"
Content-Transfer-Encoding: base64

RnJvbSAxMjA3NDgzNThiNmE3MTdjNzQwZThkNGYxMzljZTYyYTMwYmU3NjA2IE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j
b20+CkRhdGU6IFN1biwgMTYgSnVuIDIwMjQgMTU6MjE6NTIgLTA3MDAKU3ViamVjdDogW1BB
VENIIDEvMl0gQWRkIHN1cHBvcnQgZm9yIHZhcmlhYmxlLXdpZHRoIHRleHQgaW4KICd2aXN1
YWwtd3JhcC1wcmVmaXgtbW9kZScKClRoaXMgdXNlcyBhIGRpc3BsYXkgc3BlYyB0byBzZXQg
dGhlIHdpZHRoIGNvcnJlY3RseSB3aGVuIGluZGVudGluZyB3aXRoCnNwYWNlcy4KCiogbGlz
cC9lbWFjcy1saXNwL3N1YnIteC5lbCAoc3RyaW5nLXBpeGVsLXdpZHRoKTogTmV3IGFyZ3Vt
ZW50IEJVRkZFUi4KCiogbGlzcC92aXN1YWwtd3JhcC5lbCAodmlzdWFsLXdyYXAtLWNvbnRl
bnQtcHJlZml4KQoodmlzdWFsLXdyYXAtLWFkanVzdC1kaXNwbGF5LXdpZHRoKTogTmV3IGZ1
bmN0aW9ucy4KKHZpc3VhbC13cmFwLS1leHRyYS1pbmRlbnQpOiBSZW5hbWUgZnJvbSAndmlz
dWFsLXdyYXAtLXByZWZpeCcgYW5kIGNhbGwKJ3Zpc3VhbC13cmFwLS1hZGp1c3QtZGlzcGxh
eS13aWR0aCcuCih2aXN1YWwtd3JhcC1maWxsLWNvbnRleHQtcHJlZml4KTogU3VwcG9ydCBk
aXNwbGF5IHdpZHRoLiAgVXNlCid2aXN1YWwtd3JhcC0tY29udGVudC1wcmVmaXgnIGluc3Rl
YWQgb2YgJ2ZpbGwtY29udGVudC1wcmVmaXgnLCB3aGljaApsZXRzIHVzIHJlbW92ZSB0aGUg
b2xkIHdvcmthcm91bmRzLgoodmlzdWFsLXdyYXAtcHJlZml4LWZ1bmN0aW9uKTogQWxsb3cg
J2xicCcgdG8gYmUgYXQgJ3BvaW50LW1pbicuCih2aXN1YWwtd3JhcC1wcmVmaXgtbW9kZSk6
IFJlZm9udGlmeSB3aGVuIGNoYW5naW5nIHRleHQgc2NhbGUuCgoqIGRvYy9saXNwcmVmL2Rp
c3BsYXkudGV4aSAoU2l6ZSBvZiBEaXNwbGF5ZWQgVGV4dCk6IERvY3VtZW50IEJVRkZFUgph
cmd1bWVudCBmb3IgJ3N0cmluZy1waXhlbC13aWR0aCcuCgoqIGV0Yy9ORVdTOiBBbm5vdW5j
ZSB0aGlzIGNoYW5nZS4KLS0tCiBkb2MvbGlzcHJlZi9kaXNwbGF5LnRleGkgIHwgIDYgKyst
CiBldGMvTkVXUyAgICAgICAgICAgICAgICAgIHwgIDggKysrLQogbGlzcC9lbWFjcy1saXNw
L3N1YnIteC5lbCB8IDExICsrKystCiBsaXNwL3Zpc3VhbC13cmFwLmVsICAgICAgIHwgODYg
KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5n
ZWQsIDgzIGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rv
Yy9saXNwcmVmL2Rpc3BsYXkudGV4aSBiL2RvYy9saXNwcmVmL2Rpc3BsYXkudGV4aQppbmRl
eCBkNWM5NmQxM2UwMi4uNTI5NTdmMmFkMDcgMTAwNjQ0Ci0tLSBhL2RvYy9saXNwcmVmL2Rp
c3BsYXkudGV4aQorKysgYi9kb2MvbGlzcHJlZi9kaXNwbGF5LnRleGkKQEAgLTIzNTEsOSAr
MjM1MSwxMSBAQCBTaXplIG9mIERpc3BsYXllZCBUZXh0CiBtZWFuaW5nIGFzIHdpdGggQGNv
ZGV7d2luZG93LXRleHQtcGl4ZWwtc2l6ZX0uCiBAZW5kIGRlZnVuCiAKLUBkZWZ1biBzdHJp
bmctcGl4ZWwtd2lkdGggc3RyaW5nCitAZGVmdW4gc3RyaW5nLXBpeGVsLXdpZHRoIHN0cmlu
ZyAmb3B0aW9uYWwgYnVmZmVyCiBUaGlzIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhh
dCB1c2VzIEBjb2Rle3dpbmRvdy10ZXh0LXBpeGVsLXNpemV9Ci10byBjb21wdXRlIHRoZSB3
aWR0aCBvZiBAdmFye3N0cmluZ30gKGluIHBpeGVscykuCit0byBjb21wdXRlIHRoZSB3aWR0
aCBvZiBAdmFye3N0cmluZ30gKGluIHBpeGVscykuICBJZiBAdmFye2J1ZmZlcn0gaXMKK25v
bi1AY29kZXtuaWx9LCB1c2UgdGhlIGZhY2UgcmVtYXBwaW5ncyBmcm9tIHRoYXQgYnVmZmVy
IHdoZW4KK2RldGVybWluaW5nIHRoZSB3aWR0aCAoQHB4cmVme0ZhY2UgUmVtYXBwaW5nfSku
CiBAZW5kIGRlZnVuCiAKIEBkZWZ1biBsaW5lLXBpeGVsLWhlaWdodApkaWZmIC0tZ2l0IGEv
ZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCBiMmZkYmM0YTg4Zi4uMjdhNGZkMTFhODcgMTAw
NjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBAIC01NDksNyArNTQ5LDggQEAg
dGV4dCBpbiBhbnkgd2F5LiAgVGhlIGdsb2JhbCBtaW5vciBtb2RlCiBidWZmZXJzLgogCiAo
VGhpcyBtaW5vciBtb2RlIGlzIHRoZSAnYWRhcHRpdmUtd3JhcCcgRUxQQSBwYWNrYWdlIHJl
bmFtZWQgYW5kCi1saWdodGx5IGVkaXRlZCBmb3IgaW5jbHVzaW9uIGluIEVtYWNzLikKK2Vu
aGFuY2VkIGZvciBpbmNsdXNpb24gaW4gRW1hY3MuICBJdCBhZGRpdGlvbmFsbHkgc3VwcG9y
dHMgcHJlZml4ZXMgZm9yCit2YXJpYWJsZS13aWR0aCB0ZXh0LikKIAogKysrCiAqKiBOZXcg
dXNlciBvcHRpb24gJ2d1ZC1oaWdobGlnaHQtY3VycmVudC1saW5lJy4KQEAgLTI3ODksNiAr
Mjc5MCwxMSBAQCBUaGVzZSBmdW5jdGlvbnMgYXJlIGxpa2UgJ3VzZXItdWlkJyBhbmQgJ2dy
b3VwLWdpZCcsIHJlc3BlY3RpdmVseSwgYnV0CiBhcmUgYXdhcmUgb2YgZmlsZSBuYW1lIGhh
bmRsZXJzLCBzbyB0aGV5IHdpbGwgcmV0dXJuIHRoZSByZW1vdGUgVUlEIG9yCiBHSUQgZm9y
IHJlbW90ZSBmaWxlcyAob3IgLTEgaWYgdGhlIGNvbm5lY3Rpb24gaGFzIG5vIGFzc29jaWF0
ZWQgdXNlcikuCiAKKysrKworKiogJ3N0cmluZy1waXhlbC13aWR0aCcgbm93IGFjY2VwdHMg
YSBCVUZGRVIgYXJndW1lbnQuCitJZiBCVUZGRVIgaXMgbm9uLW5pbCwgJ3N0cmluZy1waXhl
bC13aWR0aCcgd2lsbCBhcHBseSBCVUZGRVIncyBmYWNlCityZW1hcHBpbmdzIHdoZW4gY29t
cHV0aW5nIHRoZSBzdHJpbmcncyB3aWR0aC4KKwogKysrCiAqKiAnZnNldCcsICdkZWZhbGlh
cycgYW5kICdkZWZ2YXJhbGlhcycgbm93IHNpZ25hbCBhbiBlcnJvciBmb3IgY3ljbGljIGFs
aWFzZXMuCiBQcmV2aW91c2x5LCAnZnNldCcsICdkZWZhbGlhcycgYW5kICdkZWZ2YXJhbGlh
cycgY291bGQgYmUgbWFkZSB0bwpkaWZmIC0tZ2l0IGEvbGlzcC9lbWFjcy1saXNwL3N1YnIt
eC5lbCBiL2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwKaW5kZXggNjk5YmU3NjdlZTcuLjJj
YmUxYmViOWYxIDEwMDY0NAotLS0gYS9saXNwL2VtYWNzLWxpc3Avc3Vici14LmVsCisrKyBi
L2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwKQEAgLTMzMyw4ICszMzMsMTAgQEAgbmFtZWQt
bGV0CiAgICAgICAuICxhYXJncykpKQogCiA7OzsjIyNhdXRvbG9hZAotKGRlZnVuIHN0cmlu
Zy1waXhlbC13aWR0aCAoc3RyaW5nKQotICAiUmV0dXJuIHRoZSB3aWR0aCBvZiBTVFJJTkcg
aW4gcGl4ZWxzLiIKKyhkZWZ1biBzdHJpbmctcGl4ZWwtd2lkdGggKHN0cmluZyAmb3B0aW9u
YWwgYnVmZmVyKQorICAiUmV0dXJuIHRoZSB3aWR0aCBvZiBTVFJJTkcgaW4gcGl4ZWxzLgor
SWYgQlVGRkVSIGlzIG5vbi1uaWwsIHVzZSB0aGUgZmFjZSByZW1hcHBpbmdzIGZyb20gdGhh
dCBidWZmZXIgd2hlbgorZGV0ZXJtaW5pbmcgdGhlIHdpZHRoLiIKICAgKGRlY2xhcmUgKGlt
cG9ydGFudC1yZXR1cm4tdmFsdWUgdCkpCiAgIChpZiAoemVyb3AgKGxlbmd0aCBzdHJpbmcp
KQogICAgICAgMApAQCAtMzQ4LDYgKzM1MCwxMSBAQCBzdHJpbmctcGl4ZWwtd2lkdGgKICAg
ICAgIDs7IERpc2FibGUgbGluZS1wcmVmaXggYW5kIHdyYXAtcHJlZml4LCBmb3IgdGhlIHNh
bWUgcmVhc29uLgogICAgICAgKHNldHEgbGluZS1wcmVmaXggbmlsCiAJICAgIHdyYXAtcHJl
Zml4IG5pbCkKKyAgICAgIChpZiBidWZmZXIKKyAgICAgICAgICAoc2V0cS1sb2NhbCBmYWNl
LXJlbWFwcGluZy1hbGlzdAorICAgICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQt
YnVmZmVyIGJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS1yZW1hcHBpbmct
YWxpc3QpKQorICAgICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnZmFjZS1yZW1hcHBpbmct
YWxpc3QpKQogICAgICAgKGluc2VydCAocHJvcGVydGl6ZSBzdHJpbmcgJ2xpbmUtcHJlZml4
IG5pbCAnd3JhcC1wcmVmaXggbmlsKSkKICAgICAgIChjYXIgKGJ1ZmZlci10ZXh0LXBpeGVs
LXNpemUgbmlsIG5pbCB0KSkpKSkKIApkaWZmIC0tZ2l0IGEvbGlzcC92aXN1YWwtd3JhcC5l
bCBiL2xpc3AvdmlzdWFsLXdyYXAuZWwKaW5kZXggZDk1Y2Y0YmI1NjkuLjg4NjIxOWNmZjU0
IDEwMDY0NAotLS0gYS9saXNwL3Zpc3VhbC13cmFwLmVsCisrKyBiL2xpc3AvdmlzdWFsLXdy
YXAuZWwKQEAgLTk3LDM4ICs5Nyw3MyBAQCB2aXN1YWwtd3JhcC0tcHJlZml4LWZhY2UKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAodmlzdWFsLXdyYXAtLWZhY2Ut
ZXh0ZW5kLXAgZikgZikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW9sLWZh
Y2UpKSkpKSkpCiAKLShkZWZ1biB2aXN1YWwtd3JhcC0tcHJlZml4IChmY3ApCisoZGVmdW4g
dmlzdWFsLXdyYXAtLWNvbnRlbnQtcHJlZml4IChwb3NpdGlvbikKKyAgIkdldCB0aGUgY29u
dGVudCBwcmVmaXggZm9yIHRoZSBsaW5lIHN0YXJ0aW5nIGF0IFBPU0lUSU9OLgorVGhpcyBp
cyBsaWtlIGBmaWxsLWNvbnRlbnQtcHJlZml4JyBidXQgZG9lc24ndCBjaGVjayBzdWJzZXF1
ZW50IGxpbmVzCithbmQgdXNlcyBkaXNwbGF5IHNwZWNzIHRvIGhhbmRsZSB2YXJpYWJsZS1w
aXRjaCBmYWNlcy4iCisgIChzYXZlLWV4Y3Vyc2lvbgorICAgIChnb3RvLWNoYXIgcG9zaXRp
b24pCisgICAgKGlmIChlb2xwKSAoZm9yd2FyZC1saW5lIDEpKQorICAgIDs7IE1vdmUgdG8g
dGhlIHNlY29uZCBsaW5lIHVubGVzcyB0aGVyZSBpcyBqdXN0IG9uZS4KKyAgICAobW92ZS10
by1sZWZ0LW1hcmdpbikKKyAgICAobGV0ICgocHJlZml4IChmaWxsLW1hdGNoLWFkYXB0aXZl
LXByZWZpeCkpKQorICAgICAgOzsgQ2hlY2sgd2hldGhlciB3ZSBzaG91bGQgdXNlIG91ciBm
aXJzdC1saW5lIGNvbnRlbnQgcHJlZml4LgorICAgICAgKGlmIChvciAoYW5kIGFkYXB0aXZl
LWZpbGwtZmlyc3QtbGluZS1yZWdleHAKKwkJICAgKHN0cmluZy1tYXRjaCBhZGFwdGl2ZS1m
aWxsLWZpcnN0LWxpbmUtcmVnZXhwIHByZWZpeCkpCisJICAgICAgKGFuZCBjb21tZW50LXN0
YXJ0LXNraXAKKwkJICAgKHN0cmluZy1tYXRjaCBjb21tZW50LXN0YXJ0LXNraXAgcHJlZml4
KSkpCisJICBwcmVmaXgKKyAgICAgICAgOzsgV2Ugd2FudCB0aGUgcHJlZml4IHRvIGJlIHdo
aXRlc3BhY2Ugb2YgdGhlIHNhbWUgd2lkdGggYXMgdGhlCisgICAgICAgIDs7IGZpcnN0LWxp
bmUgcHJlZml4LgorICAgICAgICAobGV0ICgoc3BhY2VzIChtYWtlLXN0cmluZyAoc3RyaW5n
LXdpZHRoIHByZWZpeCkgP1xzKSkpCisgICAgICAgICAgOzsgSWYgdGhlIGZvbnQgZm9yIG91
ciBmaXJzdC1saW5lIHByZWZpeCBpcyB2YXJpYWJsZS1waXRjaCwKKyAgICAgICAgICA7OyB1
c2UgYSBkaXNwbGF5IHNwZWMgdG8gbGluZSB0aGUgc3Vic2VxdWVudCBsaW5lcyB1cAorICAg
ICAgICAgIDs7IGNvcnJlY3RseS4KKyAgICAgICAgICAod2hlbi1sZXQgKChmb250IChmb250
LWF0IHBvc2l0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgICgobWVtcSAoZm9udC1nZXQg
Zm9udCA6c3BhY2luZykgJyhuaWwgMCkpKSkKKyAgICAgICAgICAgIChwdXQtdGV4dC1wcm9w
ZXJ0eSAwIChsZW5ndGggc3BhY2VzKSAnZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGAoc3BhY2UgOndpZHRoICgsKHN0cmluZy1waXhlbC13aWR0aAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCAoY3Vy
cmVudC1idWZmZXIpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2Vz
KSkKKyAgICAgICAgICBzcGFjZXMpKSkpKQorCisoZGVmdW4gdmlzdWFsLXdyYXAtLWFkanVz
dC1kaXNwbGF5LXdpZHRoIChmY3AgbikKKyAgKHdoZW4tbGV0ICgoZGlzcGxheSAoZ2V0LXRl
eHQtcHJvcGVydHkgMCAnZGlzcGxheSBmY3ApKQorICAgICAgICAgICAgIDs7IElmIHdlIGhh
dmUgYSBkaXNwbGF5IHNwZWMgaGVyZSwgaXQgc2hvdWxkIGJlIHdoYXQgd2UKKyAgICAgICAg
ICAgICA7OyBzcGVjaWZpZWQgaW4gYHZpc3VhbC13cmFwLS1jb250ZW50LXByZWZpeCcsIGJ1
dAorICAgICAgICAgICAgIDs7IGRvdWJsZS1jaGVjayBqdXN0IHRvIGJlIHNhZmUuCisgICAg
ICAgICAgICAgKChlcSAoY2FyLXNhZmUgZGlzcGxheSkgJ3NwYWNlKSkKKyAgICAgICAgICAg
ICAod2lkdGggKGNhciAocGxpc3QtZ2V0IChjZHIgZGlzcGxheSkgOndpZHRoKSkpKQorICAg
IChwdXQtdGV4dC1wcm9wZXJ0eSAwIChsZW5ndGggZmNwKSAnZGlzcGxheQorICAgICAgICAg
ICAgICAgICAgICAgICBgKHNwYWNlIDp3aWR0aCAoLCgrIHdpZHRoIG4pKSkgZmNwKSkKKyAg
ZmNwKQorCisoZGVmdW4gdmlzdWFsLXdyYXAtLWV4dHJhLWluZGVudCAoZmNwKQogICAobGV0
ICgoZmNwLWxlbiAoc3RyaW5nLXdpZHRoIGZjcCkpKQogICAgIChjb25kCiAgICAgICgoPSAw
IHZpc3VhbC13cmFwLWV4dHJhLWluZGVudCkKICAgICAgIGZjcCkKICAgICAgKCg8IDAgdmlz
dWFsLXdyYXAtZXh0cmEtaW5kZW50KQotICAgICAgKGNvbmNhdCBmY3AgKG1ha2Utc3RyaW5n
IHZpc3VhbC13cmFwLWV4dHJhLWluZGVudCA/XHMpKSkKKyAgICAgIChsZXQqICgoZXh0cmEg
KG1ha2Utc3RyaW5nIHZpc3VhbC13cmFwLWV4dHJhLWluZGVudCA/XHMpKQorICAgICAgICAg
ICAgIChyZXN1bHQgKGNvbmNhdCBmY3AgZXh0cmEpKSkKKyAgICAgICAgKHZpc3VhbC13cmFw
LS1hZGp1c3QtZGlzcGxheS13aWR0aAorICAgICAgICAgcmVzdWx0IChzdHJpbmctcGl4ZWwt
d2lkdGggZXh0cmEgKGN1cnJlbnQtYnVmZmVyKSkpKSkKICAgICAgKCg8IDAgKCsgdmlzdWFs
LXdyYXAtZXh0cmEtaW5kZW50IGZjcC1sZW4pKQotICAgICAgKHN1YnN0cmluZyBmY3AKLSAg
ICAgICAgICAgICAgICAgMAotICAgICAgICAgICAgICAgICAoKyB2aXN1YWwtd3JhcC1leHRy
YS1pbmRlbnQgZmNwLWxlbikpKQorICAgICAgKGxldCogKChpZHggKCsgdmlzdWFsLXdyYXAt
ZXh0cmEtaW5kZW50IGZjcC1sZW4pKQorICAgICAgICAgICAgICh0cmltIChzdWJzdHJpbmcg
ZmNwIGlkeCkpCisgICAgICAgICAgICAgKHJlc3VsdCAoc3Vic3RyaW5nIGZjcCAwIGlkeCkp
KQorICAgICAgICAocmVtb3ZlLXRleHQtcHJvcGVydGllcyAwIChsZW5ndGggdHJpbSkgJyhk
aXNwbGF5KSB0cmltKQorICAgICAgICAodmlzdWFsLXdyYXAtLWFkanVzdC1kaXNwbGF5LXdp
ZHRoCisgICAgICAgICByZXN1bHQgKC0gKHN0cmluZy1waXhlbC13aWR0aCB0cmltIChjdXJy
ZW50LWJ1ZmZlcikpKSkpKQogICAgICAodAogICAgICAgIiIpKSkpCiAKIChkZWZ1biB2aXN1
YWwtd3JhcC1maWxsLWNvbnRleHQtcHJlZml4IChiZWcgZW5kKQogICAiQ29tcHV0ZSB2aXN1
YWwgd3JhcCBwcmVmaXggZnJvbSB0ZXh0IGJldHdlZW4gQkVHIGFuZCBFTkQuCi1UaGlzIGlz
IGxpa2UgYGZpbGwtY29udGV4dC1wcmVmaXgnLCBidXQgd2l0aCBwcmVmaXggbGVuZ3RoIGFk
anVzdGVkCi1ieSBgdmlzdWFsLXdyYXAtZXh0cmEtaW5kZW50Jy4iCi0gIChsZXQqICgoZmNw
Ci0gICAgICAgICAgOzsgYGZpbGwtY29udGV4dC1wcmVmaXgnIGlnbm9yZXMgcHJlZml4ZXMg
dGhhdCBsb29rIGxpa2UKLSAgICAgICAgICA7OyBwYXJhZ3JhcGggc3RhcnRzLCBpbiBvcmRl
ciB0byBhdm9pZCBpbmFkdmVydGVudGx5Ci0gICAgICAgICAgOzsgY3JlYXRpbmcgYSBuZXcg
cGFyYWdyYXBoIHdoaWxlIGZpbGxpbmcsIGJ1dCBoZXJlIHdlJ3JlCi0gICAgICAgICAgOzsg
b25seSBkZWFsaW5nIHdpdGggc2luZ2xlLWxpbmUgInBhcmFncmFwaHMiIGFuZCB3ZSBkb24n
dAotICAgICAgICAgIDs7IGFjdHVhbGx5IG1vZGlmeSB0aGUgYnVmZmVyLCBzbyB0aGlzIHJl
c3RyaWN0aW9uIGRvZXNuJ3QKLSAgICAgICAgICA7OyBtYWtlIG11Y2ggc2Vuc2UgKGFuZCBp
cyBwb3NpdGl2ZWx5IGhhcm1mdWwgaW4KLSAgICAgICAgICA7OyB0YXNrcGFwZXItbW9kZSB3
aGVyZSBwYXJhZ3JhcGgtc3RhcnQgbWF0Y2hlcyBldmVyeXRoaW5nKS4KLSAgICAgICAgICAo
b3IgKGxldCAoKHBhcmFncmFwaC1zdGFydCByZWdleHAtdW5tYXRjaGFibGUpKQotICAgICAg
ICAgICAgICAgICAgICAoZmlsbC1jb250ZXh0LXByZWZpeCBiZWcgZW5kKSkKLSAgICAgICAg
ICAgICAgICAgIDs7IE5vdGU6IGZpbGwtY29udGV4dC1wcmVmaXggbWF5IHJldHVybiBuaWw7
IFNlZToKLSAgICAgICAgICAgICAgICAgIDs7IGh0dHA6Ly9hcnRpY2xlLmdtYW5lLm9yZy9n
bWFuZS5lbWFjcy5kZXZlbC8xNTYyODUKLSAgICAgICAgICAgICAgIiIpKQotICAgICAgICAg
KHByZWZpeCAodmlzdWFsLXdyYXAtLXByZWZpeCBmY3ApKQorVGhpcyBpcyBsaWtlIGBmaWxs
LWNvbnRleHQtcHJlZml4JywgYnV0IHN1cHBvcnRpbmcgdmFyaWFibGUtd2lkdGggZmFjZXMK
K2FuZCB3aXRoIHRoZSBwcmVmaXggbGVuZ3RoIGFkanVzdGVkIGJ5IGB2aXN1YWwtd3JhcC1l
eHRyYS1pbmRlbnQnLiIKKyAgKGxldCogKChmY3AgKHZpc3VhbC13cmFwLS1jb250ZW50LXBy
ZWZpeCBiZWcpKQorICAgICAgICAgKHByZWZpeCAodmlzdWFsLXdyYXAtLWV4dHJhLWluZGVu
dCBmY3ApKQogICAgICAgICAgKGZhY2UgKHZpc3VhbC13cmFwLS1wcmVmaXgtZmFjZSBmY3Ag
YmVnIGVuZCkpKQogICAgIChpZiBmYWNlCiAgICAgICAgIChwcm9wZXJ0aXplIHByZWZpeCAn
ZmFjZSBmYWNlKQpAQCAtMTYwLDcgKzE5NSw4IEBAIHZpc3VhbC13cmFwLXByZWZpeC1mdW5j
dGlvbgogCSAocmVtb3ZlLXRleHQtcHJvcGVydGllcwogCSAgMCAobGVuZ3RoIHBmeCkgJyh3
cmFwLXByZWZpeCkgcGZ4KQogICAgICAgICAgKGxldCAoKGRwIChnZXQtdGV4dC1wcm9wZXJ0
eSAwICdkaXNwbGF5IHBmeCkpKQotICAgICAgICAgICAod2hlbiAoYW5kIGRwIChlcSBkcCAo
Z2V0LXRleHQtcHJvcGVydHkgKDEtIGxicCkgJ2Rpc3BsYXkpKSkKKyAgICAgICAgICAgKHdo
ZW4gKGFuZCBkcCAoPiBsYnAgKHBvaW50LW1pbikpCisgICAgICAgICAgICAgICAgICAgICAg
KGVxIGRwIChnZXQtdGV4dC1wcm9wZXJ0eSAoMS0gbGJwKSAnZGlzcGxheSkpKQogICAgICAg
ICAgICAgIDs7IFRoZXJlJ3MgYSBgZGlzcGxheScgcHJvcGVydHkgd2hpY2ggY292ZXJzIG5v
dCBqdXN0IHRoZQogICAgICAgICAgICAgIDs7IHByZWZpeCBidXQgYWxzbyB0aGUgcHJldmlv
dXMgbmV3bGluZS4gIFNvIGl0J3Mgbm90CiAgICAgICAgICAgICAgOzsganVzdCBtYWtpbmcg
dGhlIHByZWZpeCBtb3JlIHByZXR0eSBhbmQgY291bGQgaW50ZXJmZXJlCkBAIC0xODcsOCAr
MjIzLDEyIEBAIHZpc3VhbC13cmFwLXByZWZpeC1tb2RlCiAgICAgICAgIDs7IG9mIHRoZSBo
b29rIChidWcjMTUxNTUpLgogICAgICAgICAoYWRkLWhvb2sgJ2ppdC1sb2NrLWZ1bmN0aW9u
cwogICAgICAgICAgICAgICAgICAgIyd2aXN1YWwtd3JhcC1wcmVmaXgtZnVuY3Rpb24gJ2Fw
cGVuZCB0KQotICAgICAgICAoaml0LWxvY2stcmVnaXN0ZXIgIyd2aXN1YWwtd3JhcC1wcmVm
aXgtZnVuY3Rpb24pKQorICAgICAgICAoaml0LWxvY2stcmVnaXN0ZXIgIyd2aXN1YWwtd3Jh
cC1wcmVmaXgtZnVuY3Rpb24pCisgICAgICAgIDs7IEZJWE1FOiBXaGF0IHNob3VsZCB3ZSBk
byBhYm91dCBgZ2xvYmFsLXRleHQtc2NhbGUtYWRqdXN0JyBvcgorICAgICAgICA7OyBvdGhl
ciB0aGluZ3MgdGhhdCBjYW4gY2hhbmdlIHRoZSB0ZXh0IHNpemU/CisgICAgICAgIChhZGQt
aG9vayAndGV4dC1zY2FsZS1tb2RlLWhvb2sgIydqaXQtbG9jay1yZWZvbnRpZnkgbmlsIHQp
KQogICAgIChqaXQtbG9jay11bnJlZ2lzdGVyICMndmlzdWFsLXdyYXAtcHJlZml4LWZ1bmN0
aW9uKQorICAgIChyZW1vdmUtaG9vayAndGV4dC1zY2FsZS1tb2RlLWhvb2sgIydqaXQtbG9j
ay1yZWZvbnRpZnkpCiAgICAgKHdpdGgtc2lsZW50LW1vZGlmaWNhdGlvbnMKICAgICAgIChz
YXZlLXJlc3RyaWN0aW9uCiAgICAgICAgICh3aWRlbikKLS0gCjIuMjUuMQoK

--------------fiT0Rab0roZKyB3qsvnzQXTk--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Jim Porter <jporterbugs@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 17 Jun 2024 18:19:01 +0000
Resent-Message-ID: <handler.71605.B71605.171864833630888 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Po Lu <luangruo@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.171864833630888
          (code B ref 71605); Mon, 17 Jun 2024 18:19:01 +0000
Received: (at 71605) by debbugs.gnu.org; 17 Jun 2024 18:18:56 +0000
Received: from localhost ([127.0.0.1]:35316 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJGwR-000827-QV
	for submit <at> debbugs.gnu.org; Mon, 17 Jun 2024 14:18:56 -0400
Received: from mail-pg1-f178.google.com ([209.85.215.178]:49259)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <jporterbugs@HIDDEN>) id 1sJGwP-00081p-EO
 for 71605 <at> debbugs.gnu.org; Mon, 17 Jun 2024 14:18:54 -0400
Received: by mail-pg1-f178.google.com with SMTP id
 41be03b00d2f7-6c4926bf9baso3843065a12.2
 for <71605 <at> debbugs.gnu.org>; Mon, 17 Jun 2024 11:18:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1718648265; x=1719253065; darn=debbugs.gnu.org;
 h=content-transfer-encoding:in-reply-to:references:cc:to:from
 :content-language:subject:mime-version:date:message-id:from:to:cc
 :subject:date:message-id:reply-to;
 bh=bgnGaAkkCfzT9pg5IRdG+IQ01s2N5ZIu0C5sP/EspF4=;
 b=DAKWQkaf8BisJYiBqtk51LhXMScz92YSChmrP469xttrU1hJxi+KVkcKmxBN1Yf3Ax
 2m9k7nXBIQpxlwIJRBFZmMPivY6NoMWf4XXoXVvzkWnBx1rFzxJhl4C+3DvD291NvwLS
 pFRU+mOjgibTK4E3YbGngIIGA/x4yxlIac7bYJxJKYDpIuR67UCUEfMhZ1GGNFSlTr+o
 +muuX/T5JPrjV1aBkN7EgNaHb+0xV/vdauDOqWOOaHv9pDQkpwng2YXXx2HRUoEWaqVM
 /QuBWsToeeMCqSoXwKR3bMKdThcUlaxfZK3uWwUwEnIrsVnTElT2zAYJYMO6HaaNdIz2
 g8ow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1718648265; x=1719253065;
 h=content-transfer-encoding:in-reply-to:references:cc:to:from
 :content-language:subject:mime-version:date:message-id
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=bgnGaAkkCfzT9pg5IRdG+IQ01s2N5ZIu0C5sP/EspF4=;
 b=pIZtkeiAxRs/L3gdU6U9KMkbBIaD1z2v8dKCzdYilVgJm99ZRbOD2HoDGrPJidst+C
 HeDBkTTZJGuBqYt+ZyhHaavrinZDMtTB85spUY0Y497am+rSX/OdV37F0NZRSaKFYaza
 9UPBr8PBZd/SbxJyfHDT30ijwLxomdu6KrF7v9tIGeylpKiat3zfdUVtXTszYNzSdKaO
 jg4u3+JP4iBIfyaNH3xVBL7SmbCpIpUA8JrV2MYAuc36ldZ99N1PFGv4zAo4zsdKdUMG
 ApwA/LikjOxo16YPqwh4NYoxmo5KE/tDpGp9zZZcLdyvwdH62/maWHojWUARbumJ34mx
 Qpow==
X-Gm-Message-State: AOJu0YwWd2rDxkzjbL2ndAPG0V6R1hVwnzLAHZEIGhT04ihtxF4ZO7st
 cz9i33903V/OENytnDSeLiQ6p7CMhLAHoRsElVPeNeA6rNTtMBJb
X-Google-Smtp-Source: AGHT+IG5Xd845XMbvk3C83ZeSP3NLp9g7X/OZNB9+Zo0K2x8YaICRGnF7J0q/4GlzdXLOhS85ilbiQ==
X-Received: by 2002:a17:902:d507:b0:1f7:38c5:1f34 with SMTP id
 d9443c01a7336-1f8627da8c2mr134810685ad.39.1718648264576; 
 Mon, 17 Jun 2024 11:17:44 -0700 (PDT)
Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com.
 [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id
 d9443c01a7336-1f855f3c812sm82037015ad.274.2024.06.17.11.17.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 17 Jun 2024 11:17:44 -0700 (PDT)
Message-ID: <4e596683-665e-8e2c-c201-9ddcb476d195@HIDDEN>
Date: Mon, 17 Jun 2024 11:17:45 -0700
MIME-Version: 1.0
Content-Language: en-US
From: Jim Porter <jporterbugs@HIDDEN>
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <s54cyof3ayi.fsf@HIDDEN> <835c7897-d276-b0fe-6d1e-8e6a20cac2bb@HIDDEN>
In-Reply-To: <835c7897-d276-b0fe-6d1e-8e6a20cac2bb@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.0 (/)
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 (-)

On 6/17/2024 9:13 AM, Jim Porter wrote:
> Note that I haven't removed any of the old logic though; it's all there 
> as before, since the space characters are useful for terminals (where 
> the pixelwise :width display-spec doesn't do anything for us, if I 
> understand correctly).

Evidently I wasn't understanding this correctly, since further testing 
and consulting the code shows that the :width display-spec works just 
fine on terminals. It does make it harder to get this patch working well 
though...

Maybe :align-to could be made to work. It doesn't seem to work at all 
for me, even in a minimal test case like calling this on a long line of 
text:

   (put-text-property (point-min) (point-max) 'wrap-prefix '(space 
:align-to 4))

Replacing :align-to with :width works just fine though. It's entirely 
possible I'm just doing something wrong, but maybe this is a bug?

(Now what would be great is if :align-to supported a *string* value that 
meant "use the pixel-width of this string". Which actually gives me an 
idea... what if the wrap-prefix is just the original text like "* " and 
we fontify it to be invisible? It's not part of the buffer and you can't 
select it anyway, so it doesn't really matter what the text is so long 
as it's not visible.)






Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 17 Jun 2024 18:21:01 +0000
Resent-Message-ID: <handler.71605.B71605.171864844731084 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Jim Porter <jporterbugs@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.171864844731084
          (code B ref 71605); Mon, 17 Jun 2024 18:21:01 +0000
Received: (at 71605) by debbugs.gnu.org; 17 Jun 2024 18:20:47 +0000
Received: from localhost ([127.0.0.1]:35321 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJGyE-00085I-EM
	for submit <at> debbugs.gnu.org; Mon, 17 Jun 2024 14:20:46 -0400
Received: from eggs.gnu.org ([209.51.188.92]:48044)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1sJGyC-000851-Gy
 for 71605 <at> debbugs.gnu.org; Mon, 17 Jun 2024 14:20:45 -0400
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 1sJGy2-00073L-Gt; Mon, 17 Jun 2024 14:20:34 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=Ool+twL7TsEvFxnsWtrwWc4q4T9SZ3de5yOcnUpxhrM=; b=cz9kacxaARomsKP7gCF7
 JkZs/K4k09FvKNyXQh5LZcqOk4tdpH9y1ppV1YZ4srxqd8yQN1e29GojlJ+fGSxb7Jwc7ltvZaz57
 5lrTGsBjFeqV5uCScOjWHdm1mTH6YknQS47qIS6Pp0MTmoMbwDGvBgIEP4tDw2kvnAoPxTVRI6CvH
 HsWHHnshQgiwqnSlrGEeizvPreozJXmrw4QhrfYXKo3RPk8bozeceMmWkIMYwCyOl5BpWdqwCerMK
 h5neVpn3sXer1OvY37nOAKxf9CNGhK586B0RRWahAi6M/IhmRV2gmEct7Oki+WXIpzbXjqKtSyVXZ
 Lz93pfoUtG0mgg==;
Date: Mon, 17 Jun 2024 21:20:25 +0300
Message-Id: <86plsfqvme.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <201c2285-012f-fa29-03b5-78a2e26aa134@HIDDEN> (message from
 Jim Porter on Mon, 17 Jun 2024 10:42:56 -0700)
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <868qz3ssu0.fsf@HIDDEN> <201c2285-012f-fa29-03b5-78a2e26aa134@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
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: Mon, 17 Jun 2024 10:42:56 -0700
> Cc: 71605 <at> debbugs.gnu.org
> From: Jim Porter <jporterbugs@HIDDEN>
> 
> On 6/17/2024 4:37 AM, Eli Zaretskii wrote:
> >> Date: Sun, 16 Jun 2024 19:56:44 -0700
> >> From: Jim Porter <jporterbugs@HIDDEN>
> >> The attached patch adds a display spec in this case so that the text
> >> lines up perfectly.
> > 
> > Can you explain the idea of the patch?  I don't think I understand why
> > you use '(space :width)' rather than '(space :align-to)'.
> 
> I tried using :align-to, and it doesn't seem to take effect for the 
> 'wrap-prefix' text property. I haven't looked closely at why that 
> doesn't work, but even if it did, I think it might make things more 
> complex than they already are.

What exactly did you try?  I might be misremembering, but I'm not
aware of any limitations wrt use of :align-to in wrap-prefix.  In
fact, the ELisp reference manual explicitly mentions :align-to in its
description of wrap-prefix.

> If I understand your :align-to suggestion, setting :align-to on 
> everything after the "* " bullet could work in theory, but I don't know 
> what value you could set there to make everything correct.

Some multiple of the width of the default font's representative
character, or of its average-width property?

> The 'face-change' idea could work, or here's another possibility: what 
> about using :relative-width?

:relative-width could work, but you'd need to make sure it takes the
width from a fixed character, otherwise different paragraphs won't
align the same.  The ELisp manual says:

  ‘:relative-width FACTOR’
       Specifies that the width of the stretch should be computed from the
       first character in the group of consecutive characters that have
       the same ‘display’ property.  The space width is the pixel width of
       that character, multiplied by FACTOR.


> If I set that correctly, then the pixel-size should adjust as the
> text scales. It wouldn't handle the case where the actual font
> changes though.

Why not?

> >> -@defun string-pixel-width string
> >> +@defun string-pixel-width string &optional buffer
> >>   This is a convenience function that uses @code{window-text-pixel-size}
> >> -to compute the width of @var{string} (in pixels).
> >> +to compute the width of @var{string} (in pixels).  If @var{buffer} is
> >> +non-@code{nil}, use the face remappings from that buffer when
> >> +determining the width (@pxref{Face Remapping}).
> > 
> > An alternative would be to provide a face to use.
> > 
> > In any case, using BUFFER only for face-remapping-alist is only a
> > small part of what a buffer can do to a string: there's the major mode
> > with its fontifications and whatnot.
> 
> Yeah, I'm not entirely happy with this BUFFER argument either. I don't 
> think we need to worry about fontification in this case though, since 
> you can pass in a fontified string.
> 
> Maybe this should take the face-remapping-alist directly? Or maybe we 
> should pass in a window?

If you can pass a window, you can use window-text-pixel-size instead.

> >> +(defun visual-wrap--adjust-display-width (fcp n)
> >> +  (when-let ((display (get-text-property 0 'display fcp))
> >> +             ((eq (car-safe display) 'space))
> > 
> > Doesn't this only work with very simple 'display' specs?  The 'space'
> > part could be in some place deep in the spec, not just the second
> > symbol.
> 
> Yeah, though the FCP argument is always the prefix we constructed, so we 
> know what the display-spec looks like if it's present.

Sure, but that means the code is fragile, and you need to comment
prominently that if the form of the display spec changes in the
future, this code will need to be adapted.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Jim Porter <jporterbugs@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 17 Jun 2024 18:46:01 +0000
Resent-Message-ID: <handler.71605.B71605.17186499571174 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.17186499571174
          (code B ref 71605); Mon, 17 Jun 2024 18:46:01 +0000
Received: (at 71605) by debbugs.gnu.org; 17 Jun 2024 18:45:57 +0000
Received: from localhost ([127.0.0.1]:35379 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJHMb-0000Iq-0S
	for submit <at> debbugs.gnu.org; Mon, 17 Jun 2024 14:45:57 -0400
Received: from mail-pj1-f43.google.com ([209.85.216.43]:52480)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <jporterbugs@HIDDEN>) id 1sJHMY-0000Ia-Fy
 for 71605 <at> debbugs.gnu.org; Mon, 17 Jun 2024 14:45:55 -0400
Received: by mail-pj1-f43.google.com with SMTP id
 98e67ed59e1d1-2c4c7eb425fso3731780a91.1
 for <71605 <at> debbugs.gnu.org>; Mon, 17 Jun 2024 11:45:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1718649886; x=1719254686; darn=debbugs.gnu.org;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:mime-version:date:message-id:from:to:cc
 :subject:date:message-id:reply-to;
 bh=1mqzTT2ftJrw+OmqPOv3oEYs+m3oejSxsjpYYVTuUng=;
 b=mt50fzacyh02jhMmeVnH9uojw8xjODePiZIHJwlGcTn203w/BibabBkcIwZYqjtnTT
 ZpxlZk8OITRIaAuaqYh1JW2sJMsy9kE3ajVB025A4h3AfYDgvfnV2AOrKs2np8nCd7Rl
 uiMABO8kIBPsGltE0YnZ+kYt//6cbe1Ki1KCudJXDKRbQw4cMwuD2xvjxp4VXVrp+vLQ
 qq1tYhp07hFDMklX0udB8MrJtanxUYs1UcDtNC6fPAcoXDoUi8Idb9RT0dzTCrKmFbCH
 8yGC0kNmE38wCRBKM9yCBn9RIQ7Zd3fdXLih/IeHPbU7r/IW6EqcAHydiY3aCqJmQ4La
 Ai5g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1718649886; x=1719254686;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:mime-version:date:message-id
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=1mqzTT2ftJrw+OmqPOv3oEYs+m3oejSxsjpYYVTuUng=;
 b=gOL4k/DOautE0cYFPXOZIaxnf/iA8XoVxtPWCItsq9zg/dOyq4OhcwoM4y85GzwEib
 sNfss0SITmMriDhZvu1ol2q07B1IF0iinUp+VZmILYs0tyJQz8xur7aZ5/Cd/f1QdE07
 k48zFNVG47OoNbM7lYwf+drRFqtSkgc5UuPvViVzSXZ7L6UEfGKFQkEXc5xyPqjUZDXN
 3DPguTOApn0DLMAWs85Z2bSkKD2F/pquIb32ZE7IbiCt8+2q6YPGKBsHi8bfxeBWL06E
 JJdjxLbY6u8KZmajrOxgQqmfNd/OWNZdv0wG7TryvNBg8zJXAwmD7woU4jnn08bcSWqH
 saMg==
X-Gm-Message-State: AOJu0YziOu+WEGOsu5bVrsadeet2DZDcN/OFyG+IIiEeEHwjeWtP4UQK
 iNdvXNhk3uUsyRnuuIrh6GjU5ricFnohHQThzDmN9ozg870dUGyzrII3Uw==
X-Google-Smtp-Source: AGHT+IH2tGZLzm82pQ7LOXm25mon/rub9aEL8heRAqjSD4b0WrQcLK5fGyHAUKV9jCJ6ElTbZ9nblA==
X-Received: by 2002:a17:90a:fa06:b0:2c2:c148:c961 with SMTP id
 98e67ed59e1d1-2c4dbd44db6mr9148799a91.48.1718649886562; 
 Mon, 17 Jun 2024 11:44:46 -0700 (PDT)
Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com.
 [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id
 98e67ed59e1d1-2c4a76aa3f4sm11541072a91.53.2024.06.17.11.44.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 17 Jun 2024 11:44:46 -0700 (PDT)
Message-ID: <66e7c49d-adb6-186f-18f1-33eee9f668ad@HIDDEN>
Date: Mon, 17 Jun 2024 11:44:47 -0700
MIME-Version: 1.0
Content-Language: en-US
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <868qz3ssu0.fsf@HIDDEN> <201c2285-012f-fa29-03b5-78a2e26aa134@HIDDEN>
 <86plsfqvme.fsf@HIDDEN>
From: Jim Porter <jporterbugs@HIDDEN>
In-Reply-To: <86plsfqvme.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.0 (/)
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 (-)

Replying to your individual points below, but in the other subthread, I 
had the idea that maybe a better way to do this would be for the wrap 
prefix to always be the first-line prefix but to make it transparent 
when desired. So for the "* some text" example, the wrap-prefix would be 
"* " but fontified(?) such that you can't see it.

A face transparency attribute might do the trick, and be useful for 
other things too: 
<https://lists.gnu.org/archive/html/emacs-devel/2024-01/msg00657.html>. 
Or maybe :align-to could take a string value, which would mean "use the 
pixel-width of this string as the value".

On 6/17/2024 11:20 AM, Eli Zaretskii wrote:
>> Date: Mon, 17 Jun 2024 10:42:56 -0700
>> Cc: 71605 <at> debbugs.gnu.org
>> From: Jim Porter <jporterbugs@HIDDEN>
>>
>> I tried using :align-to, and it doesn't seem to take effect for the
>> 'wrap-prefix' text property. I haven't looked closely at why that
>> doesn't work, but even if it did, I think it might make things more
>> complex than they already are.
> 
> What exactly did you try?  I might be misremembering, but I'm not
> aware of any limitations wrt use of :align-to in wrap-prefix.  In
> fact, the ELisp reference manual explicitly mentions :align-to in its
> description of wrap-prefix.

My minimal test case is to open a buffer, put some random text in (long 
enough that it would wrap), and then call:

   (put-text-property (point-min) (point-max) 'wrap-prefix '(space 
:align-to 4))

Nothing changes for me. If I replace :align-to with :width, I see the 
continuation lines get indented by 4 characters.

>> The 'face-change' idea could work, or here's another possibility: what
>> about using :relative-width?
> 
> :relative-width could work, but you'd need to make sure it takes the
> width from a fixed character, otherwise different paragraphs won't
> align the same.

In this case, the first character is always a space so that's ok.

>> If I set that correctly, then the pixel-size should adjust as the
>> text scales. It wouldn't handle the case where the actual font
>> changes though.
> 
> Why not?

I was planning to set :relative-width to <first_line_prefix_width> / 
<width_of_one_space>. If the font changes, the result of that 
calculation can change.

>>>> -@defun string-pixel-width string
>>>> +@defun string-pixel-width string &optional buffer
[snip]
>> Maybe this should take the face-remapping-alist directly? Or maybe we
>> should pass in a window?
> 
> If you can pass a window, you can use window-text-pixel-size instead.

I think 'window-text-pixel-size' would compute the size of the text 
already in the buffer, and I was looking for a function that told the 
width of some text if I were to later display it in that window. In any 
case, I might not need to use this function at all depending on how I do 
things...

>> Yeah, though the FCP argument is always the prefix we constructed, so we
>> know what the display-spec looks like if it's present.
> 
> Sure, but that means the code is fragile, and you need to comment
> prominently that if the form of the display spec changes in the
> future, this code will need to be adapted.

Assuming I keep going down this route, I'll be sure to comment this 
extensively.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 17 Jun 2024 19:56:02 +0000
Resent-Message-ID: <handler.71605.B71605.17186541308913 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Jim Porter <jporterbugs@HIDDEN>
Cc: luangruo@HIDDEN, 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.17186541308913
          (code B ref 71605); Mon, 17 Jun 2024 19:56:02 +0000
Received: (at 71605) by debbugs.gnu.org; 17 Jun 2024 19:55:30 +0000
Received: from localhost ([127.0.0.1]:36375 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJIRt-0002Jh-Ka
	for submit <at> debbugs.gnu.org; Mon, 17 Jun 2024 15:55:29 -0400
Received: from eggs.gnu.org ([209.51.188.92]:47302)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1sJIRo-0002JM-Uj
 for 71605 <at> debbugs.gnu.org; Mon, 17 Jun 2024 15:55:28 -0400
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 1sJIRh-0006ZE-8Y; Mon, 17 Jun 2024 15:55:17 -0400
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=c5MvAdE401JHoGyO9PBnG0GZRNQWXaKoQGnGGlFGwqg=; b=WIcfByTakbZF
 ugQqprnthI2dr+MSxI5u+srMNSUhY+3Jsx/KdxuyRzDdkxO8PkDOHNgf1iHyX1o1RaFvRaq2ZcYcu
 j1ZNAD2pugH0ZTvPQuIiew3slLPa5x4xW7976S7Mx7C24c1CP9/qpZAuyihY4PkjlsQzVC7dNTle0
 3ufgStdB7tjNudYawiW8+DD/9swoe6QF8nOAx1jO5GHuq1Y7dYD1jAFKOf2b94ELKtuSTppodKpnR
 /4jlDfY3u2UFUulmYgDOgXyC09q9p6cXpdZSsgMoHvhU9BPfpDSBTieUhjacXzmptiTePOpCCqVT9
 Etw3uluQZsUBeTNOG7kpjQ==;
Date: Mon, 17 Jun 2024 22:55:14 +0300
Message-Id: <86le33qr8d.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <4e596683-665e-8e2c-c201-9ddcb476d195@HIDDEN> (message from
 Jim Porter on Mon, 17 Jun 2024 11:17:45 -0700)
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <s54cyof3ayi.fsf@HIDDEN> <835c7897-d276-b0fe-6d1e-8e6a20cac2bb@HIDDEN>
 <4e596683-665e-8e2c-c201-9ddcb476d195@HIDDEN>
X-Spam-Score: -2.3 (--)
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 (---)

> Cc: 71605 <at> debbugs.gnu.org
> Date: Mon, 17 Jun 2024 11:17:45 -0700
> From: Jim Porter <jporterbugs@HIDDEN>
> 
> Maybe :align-to could be made to work. It doesn't seem to work at all 
> for me, even in a minimal test case like calling this on a long line of 
> text:
> 
>    (put-text-property (point-min) (point-max) 'wrap-prefix '(space 
> :align-to 4))
> 
> Replacing :align-to with :width works just fine though. It's entirely 
> possible I'm just doing something wrong, but maybe this is a bug?

It's a bug in Emacs 29 and Emacs 30.  It works in Emacs 27.

> (Now what would be great is if :align-to supported a *string* value that 
> meant "use the pixel-width of this string".

It's already possible: just have a variable that holds the width, and
use it in the :align-to expression.

> Which actually gives me an 
> idea... what if the wrap-prefix is just the original text like "* " and 
> we fontify it to be invisible? It's not part of the buffer and you can't 
> select it anyway, so it doesn't really matter what the text is so long 
> as it's not visible.)

I don't think I follow: how is this relevant to the issue at hand?




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Jim Porter <jporterbugs@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 17 Jun 2024 20:10:02 +0000
Resent-Message-ID: <handler.71605.B71605.171865499810824 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: luangruo@HIDDEN, 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.171865499810824
          (code B ref 71605); Mon, 17 Jun 2024 20:10:02 +0000
Received: (at 71605) by debbugs.gnu.org; 17 Jun 2024 20:09:58 +0000
Received: from localhost ([127.0.0.1]:36739 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJIfu-0002oV-0k
	for submit <at> debbugs.gnu.org; Mon, 17 Jun 2024 16:09:58 -0400
Received: from mail-pl1-f181.google.com ([209.85.214.181]:56355)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <jporterbugs@HIDDEN>) id 1sJIfs-0002o9-LT
 for 71605 <at> debbugs.gnu.org; Mon, 17 Jun 2024 16:09:57 -0400
Received: by mail-pl1-f181.google.com with SMTP id
 d9443c01a7336-1f44b441b08so34831815ad.0
 for <71605 <at> debbugs.gnu.org>; Mon, 17 Jun 2024 13:09:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1718654928; x=1719259728; darn=debbugs.gnu.org;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:mime-version:date:message-id:from:to:cc
 :subject:date:message-id:reply-to;
 bh=qLHI/BFG0/izN680SaSMZTSLZ1P6Yo3fQWnekVcbC1M=;
 b=HDM3mY97WvcS9Iim7eKEIlYzstckSNu1MrlNiZjO9RrbHZ027uIUoaeAIqJaexl/gm
 nPL/uIS5YsB6+kbi0gova9cFRNq4kodQJjiHqj2i/rfdBwrlR0gtcYoTFZkHW9scZrB2
 1oCn341QyYqGtNLR4exnpMTZUByToyvhNis/lBXq4cu06DzAcbrNTEQN8CXZ4ITxyM2r
 kU0Lt3TqvhVTZgntIH0ftXbjScm6wWGdy4Kt4398yndtZodcmavYDjbtV9xrMTT63XqC
 qV44ql8gwkwxr+N9ZMbKz3sSB3gdNM5QvzDDHOotvfeZXk/LUlpWj1DEx7qXMlCXIZAL
 xwqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1718654928; x=1719259728;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:mime-version:date:message-id
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=qLHI/BFG0/izN680SaSMZTSLZ1P6Yo3fQWnekVcbC1M=;
 b=cwDZB7Dd0CykPKFfXpUXPa5wqBXIKmEz/i98wiRfjMypCBG+z6nsJU8e33LdHu5zvY
 pK3PEeNZcI3+RwLpSoKANC863Ar9yDGvt/f5Jp6/BoRkFTD893xyfJkxxrb5EjTwxlxR
 ZC9JYK8VRFocB/t3eRIbD3F6rcgS8l5LldGLconlRlhy/IshtCiG5orsiE0FI68iY3ft
 wnfsKc02YJHtHEZvulBYhnD1Ev19TDwH3h09/3rzkjCA8MovL3Q6xwLg8teID5Yfl2Yh
 Pk41TGFDrj2ux6f9lGUvhZOY8InyiOsYmYPeYlZTJeaWRI871Rrtd+YHDQnk2RAiD4j/
 ygsw==
X-Forwarded-Encrypted: i=1;
 AJvYcCV2mitkBJwzJaViEvBY9GTQMx7GUSWR5FAzzRqQ/bma7/4otOKndkrM7VIhRZMP+7s8JHqUmzszfwQz5rcmRC6oFhtwK8E=
X-Gm-Message-State: AOJu0Yx+C7vZckuZWBnUZiXTOuAw9MxGnQe7kIfwBBFrT+vQhaZJSOW1
 J9L7f7PLVtNjSCVnMcxewmjB7fnPvEkbTrYFUFfbs88F7IaMb2l1
X-Google-Smtp-Source: AGHT+IHzSmWE5/Rm9FUFO9IXNC2eQ4DfydSXgyDUhnFkEQ//3fqGO+3qgHKa9uNva1QR9hoJRPoqDg==
X-Received: by 2002:a17:902:c40f:b0:1f6:8157:b52f with SMTP id
 d9443c01a7336-1f8625c60a2mr122267215ad.8.1718654928335; 
 Mon, 17 Jun 2024 13:08:48 -0700 (PDT)
Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com.
 [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id
 d9443c01a7336-1f855f02511sm83104765ad.202.2024.06.17.13.08.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 17 Jun 2024 13:08:47 -0700 (PDT)
Message-ID: <c71f647c-d8e8-59b8-1fc4-4d270eb85d69@HIDDEN>
Date: Mon, 17 Jun 2024 13:08:47 -0700
MIME-Version: 1.0
Content-Language: en-US
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <s54cyof3ayi.fsf@HIDDEN> <835c7897-d276-b0fe-6d1e-8e6a20cac2bb@HIDDEN>
 <4e596683-665e-8e2c-c201-9ddcb476d195@HIDDEN> <86le33qr8d.fsf@HIDDEN>
From: Jim Porter <jporterbugs@HIDDEN>
In-Reply-To: <86le33qr8d.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.0 (/)
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 (-)

On 6/17/2024 12:55 PM, Eli Zaretskii wrote:
>> Cc: 71605 <at> debbugs.gnu.org
>> Date: Mon, 17 Jun 2024 11:17:45 -0700
>> From: Jim Porter <jporterbugs@HIDDEN>
>>
>> Replacing :align-to with :width works just fine though. It's entirely
>> possible I'm just doing something wrong, but maybe this is a bug?
> 
> It's a bug in Emacs 29 and Emacs 30.  It works in Emacs 27.

Ah, that explains it.

>> (Now what would be great is if :align-to supported a *string* value that
>> meant "use the pixel-width of this string".
> 
> It's already possible: just have a variable that holds the width, and
> use it in the :align-to expression.

That would make the code simpler, but I'd still need to figure out when 
to reevaluate the variable to update things.

>> Which actually gives me an
>> idea... what if the wrap-prefix is just the original text like "* " and
>> we fontify it to be invisible? It's not part of the buffer and you can't
>> select it anyway, so it doesn't really matter what the text is so long
>> as it's not visible.)
> 
> I don't think I follow: how is this relevant to the issue at hand?

I was thinking you could wrap "* this is some text" like so:

   * this is
   * some text

The second "* " would come from the wrap-prefix, but we'd make the 
foreground transparent (or the same color as the background) so it 
wouldn't be visible. Then it would always take up the same width as the 
first "* " because it's the same string with the same font and everything.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Jim Porter <jporterbugs@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 18 Jun 2024 03:04:02 +0000
Resent-Message-ID: <handler.71605.B71605.171867980432485 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: luangruo@HIDDEN, 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.171867980432485
          (code B ref 71605); Tue, 18 Jun 2024 03:04:02 +0000
Received: (at 71605) by debbugs.gnu.org; 18 Jun 2024 03:03:24 +0000
Received: from localhost ([127.0.0.1]:38734 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJP80-0008Rs-8a
	for submit <at> debbugs.gnu.org; Mon, 17 Jun 2024 23:03:24 -0400
Received: from mail-pg1-f169.google.com ([209.85.215.169]:52605)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <jporterbugs@HIDDEN>) id 1sJP7y-0008Rd-3B
 for 71605 <at> debbugs.gnu.org; Mon, 17 Jun 2024 23:03:23 -0400
Received: by mail-pg1-f169.google.com with SMTP id
 41be03b00d2f7-6e9f52e99c2so3640178a12.1
 for <71605 <at> debbugs.gnu.org>; Mon, 17 Jun 2024 20:03:19 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1718679734; x=1719284534; darn=debbugs.gnu.org;
 h=content-transfer-encoding:in-reply-to:references:cc:to:from
 :content-language:subject:mime-version:date:message-id:from:to:cc
 :subject:date:message-id:reply-to;
 bh=IjWFq3WZCn+tmo6d+ySshR1Z93RkbuHJvF5cmu/Nh4Y=;
 b=eHv4050UB/Z2IEVTe7Rzx0Xfkqx5shAKrdZXgSm8Ouigibx1wIertFLbyrcMOtC8iy
 sAhh7ITjvHhehEkiU65yD5U3dtxRLJXO5OE0e/fLCDeMrcn7W0Op1Dmg8zEUxjXD2z/N
 mfHPh0cx2ZO/3e0gsLxo3pATHQjPUWo4L7E6OAbO8kLQi9+dw6S3Tq54e9EY6IUsF3TO
 FmvhjgOiBvmwuq5SGGZg407P1roCtuUoaaEvScydsRxE+xkarlqojekVAb4c6mjwwXHD
 U03ciIMGOCYyeS5i/TL682a8GM4ppRwThHgSriJd+S5jpJpjLrjwQIyU07JNF4nPEpyL
 Mf0w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1718679734; x=1719284534;
 h=content-transfer-encoding:in-reply-to:references:cc:to:from
 :content-language:subject:mime-version:date:message-id
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=IjWFq3WZCn+tmo6d+ySshR1Z93RkbuHJvF5cmu/Nh4Y=;
 b=dpcwD/5WBfZe2fJ3utHcEX/5zyIch//vOi9BUMtsmqcAplel29K/dBXn73oefurFNb
 LeOdLR8pqXnXHvIy1PPLTfFWDo88Xg8luSrWtDEKpcGogDlvpVL4YxuEqLqiypsNVCH2
 ycTTIcXa93chUXBYENqqrzD442uG+xlZ0pBCIwJJgAtF7lf5OzxqLypGQAC+hZ/hZRDz
 dJPIMW8If4UTWpElA16FMch8MZB+2YcgXgHka0e6nH5xGdIM9gSwXgghmKGXx4Ei65Am
 BcL7iWnQkGJovAu80orGtHxWSrg6oimpIUjcrvtcIFoFswpcH97LIWXWhNNFusUi/4K1
 2fUA==
X-Forwarded-Encrypted: i=1;
 AJvYcCXmJ9qjNHwda52V/0oVaNMPMhta+vPDMUIGlWdx4rqr1QZ4ElwpP+5rysYO77WedzeXrGoxsL75NGcEZ9EJpUd67djWeE8=
X-Gm-Message-State: AOJu0YzGDMLz7CLWb4ZV4pmi+HK09+ILLEjADbhGnYmD+RT8xI7cMAR9
 4nD50pIzKYvCOOKE584iK0x/FQ/tDfuIeg7jJMeiXBUkHIhKXOp1
X-Google-Smtp-Source: AGHT+IHL0z3gfN9QQugmlqr8srjrWPlZ5kZUVvcriw+TJqSLQE7aS+nkOKBn65IcRogxyBVXNRvqIw==
X-Received: by 2002:a17:90a:de0c:b0:2c2:ee5c:35a4 with SMTP id
 98e67ed59e1d1-2c4da9cd916mr11802695a91.0.1718679733593; 
 Mon, 17 Jun 2024 20:02:13 -0700 (PDT)
Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com.
 [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id
 98e67ed59e1d1-2c4a75ee4e8sm12121769a91.16.2024.06.17.20.02.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 17 Jun 2024 20:02:13 -0700 (PDT)
Message-ID: <9fe82edb-d0f1-faaf-2b1c-6c3aa66832b2@HIDDEN>
Date: Mon, 17 Jun 2024 20:02:12 -0700
MIME-Version: 1.0
Content-Language: en-US
From: Jim Porter <jporterbugs@HIDDEN>
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <s54cyof3ayi.fsf@HIDDEN> <835c7897-d276-b0fe-6d1e-8e6a20cac2bb@HIDDEN>
 <4e596683-665e-8e2c-c201-9ddcb476d195@HIDDEN> <86le33qr8d.fsf@HIDDEN>
 <c71f647c-d8e8-59b8-1fc4-4d270eb85d69@HIDDEN>
In-Reply-To: <c71f647c-d8e8-59b8-1fc4-4d270eb85d69@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.0 (/)
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 (-)

On 6/17/2024 1:08 PM, Jim Porter wrote:
> On 6/17/2024 12:55 PM, Eli Zaretskii wrote:
>>> Cc: 71605 <at> debbugs.gnu.org
>>> Date: Mon, 17 Jun 2024 11:17:45 -0700
>>> From: Jim Porter <jporterbugs@HIDDEN>
>>>
>>> Replacing :align-to with :width works just fine though. It's entirely
>>> possible I'm just doing something wrong, but maybe this is a bug?
>>
>> It's a bug in Emacs 29 and Emacs 30.  It works in Emacs 27.
> 
> Ah, that explains it.

Just so others are aware I'm going to try and bisect this. I'll report 
back when it's finished.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Jim Porter <jporterbugs@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 18 Jun 2024 06:29:01 +0000
Resent-Message-ID: <handler.71605.B71605.171869214022689 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: luangruo@HIDDEN, 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.171869214022689
          (code B ref 71605); Tue, 18 Jun 2024 06:29:01 +0000
Received: (at 71605) by debbugs.gnu.org; 18 Jun 2024 06:29:00 +0000
Received: from localhost ([127.0.0.1]:40710 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJSKy-0005tt-5Y
	for submit <at> debbugs.gnu.org; Tue, 18 Jun 2024 02:29:00 -0400
Received: from mail-pg1-f179.google.com ([209.85.215.179]:53363)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <jporterbugs@HIDDEN>) id 1sJSKv-0005tc-QB
 for 71605 <at> debbugs.gnu.org; Tue, 18 Jun 2024 02:28:58 -0400
Received: by mail-pg1-f179.google.com with SMTP id
 41be03b00d2f7-656d8b346d2so3589405a12.2
 for <71605 <at> debbugs.gnu.org>; Mon, 17 Jun 2024 23:28:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1718692069; x=1719296869; darn=debbugs.gnu.org;
 h=content-transfer-encoding:in-reply-to:references:cc:to:from
 :content-language:subject:mime-version:date:message-id:from:to:cc
 :subject:date:message-id:reply-to;
 bh=kJFwbhkd8TZ5nztSrFU55pxyDORAU3OqGlGnzsjxjgQ=;
 b=IhNWPVjW2UG7+FhXzBB6MMVQDqN4QG7FEL685JceTZ7Qj9EeYVG3y5fn6FDoRVB7gw
 L10Q0mit7mN5tCQ/IVDInL6V5FVVW0363PboKhtmWhkKhyAxlC+LRokzsxwC4fxEirJc
 8r/FoR91VKtOz0Et3450TTd7MApxvQLj65LLKZFwBByyGtYR4KdDVu19+Df/xJj4YA5H
 75r0QTH2HxA7c5kYbIpQd93XKtV3CWiufnX7H87QLHdFR/tvq3FKsuP9u/O5gFRYBwWu
 KtXviq3VNqNuVZWFzAVW4stwS8ZU0T2zApy+BCHkCj99KJSuIa9+9P5YL5dHlmYQx+Iz
 ipjg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1718692069; x=1719296869;
 h=content-transfer-encoding:in-reply-to:references:cc:to:from
 :content-language:subject:mime-version:date:message-id
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=kJFwbhkd8TZ5nztSrFU55pxyDORAU3OqGlGnzsjxjgQ=;
 b=Q2qnZANVfwA2AYrdG5Jm/YIG8HXIfUpkIN5rrJVsMdZYCWoUwAoVT6fNvC2mjLTMdx
 HBNqSGUEOKtiFJwCKwGmyPwu7oxeHVrXhSOsEnaIdZSCPRJ2nVa9jaUfwJlrXzIXvvj/
 4j+w30t6x5rOZcTkJ3HkfeAk/9ek6b1FKrZWYmIiSuDQyUK23c5UxYPhB8rSFe1Rqj2f
 0hWQNCL0iRDK8y4qBfXjBkoUK5NRVePbhh4xbtjDgXpNqsPd8Ko85JJIXNAIkdpW0jHJ
 G0qdeixC1HEjSGyrnhubXiu6H8cNlhSdUsqPlD5StGD8L/I5v8JW7AwehnaNk5KG4RUj
 QzdA==
X-Forwarded-Encrypted: i=1;
 AJvYcCWIRVc+Dbeu0++NQKenr6l7fr3nzw8gDs35yPYSbLH06r0WNmhf3vomPw6Wy1TkK+6oTZN0ytTnHcNDrfXfE81KAaahJcY=
X-Gm-Message-State: AOJu0YxkjpFxjE1fFcgKWlougjcBjdUny+XV8JVHrt1ViZmehIaJ8Cdo
 yFOq1cZvvAkUIDgIAOAenyeyiOKh/JSQOBQHpFdBIT2zkoE7gN+j
X-Google-Smtp-Source: AGHT+IEhB6M12Ujzu8cStb6eOo7y0D/vy5oWQaK4hfQlG001LtvH43ki1nAAnFd4L6Oi+j/XEA85+g==
X-Received: by 2002:a05:6a20:6a21:b0:1b6:d8bd:c42d with SMTP id
 adf61e73a8af0-1bae7d98214mr12319460637.4.1718692069387; 
 Mon, 17 Jun 2024 23:27:49 -0700 (PDT)
Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com.
 [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id
 d9443c01a7336-1f855f29011sm89859245ad.249.2024.06.17.23.27.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 17 Jun 2024 23:27:48 -0700 (PDT)
Message-ID: <f6f70ad9-ae35-7f00-5888-1c0d69bf84b0@HIDDEN>
Date: Mon, 17 Jun 2024 23:27:49 -0700
MIME-Version: 1.0
Content-Language: en-US
From: Jim Porter <jporterbugs@HIDDEN>
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <s54cyof3ayi.fsf@HIDDEN> <835c7897-d276-b0fe-6d1e-8e6a20cac2bb@HIDDEN>
 <4e596683-665e-8e2c-c201-9ddcb476d195@HIDDEN> <86le33qr8d.fsf@HIDDEN>
 <c71f647c-d8e8-59b8-1fc4-4d270eb85d69@HIDDEN>
 <9fe82edb-d0f1-faaf-2b1c-6c3aa66832b2@HIDDEN>
In-Reply-To: <9fe82edb-d0f1-faaf-2b1c-6c3aa66832b2@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.0 (/)
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 (-)

On 6/17/2024 8:02 PM, Jim Porter wrote:
> Just so others are aware I'm going to try and bisect this. I'll report 
> back when it's finished.

Looks like this is the commit that regressed this:


commit fb3d582e7ba595b7680e2c2adf22c7ab699e5792
Author: Eli Zaretskii <eliz@HIDDEN>
Date:   Wed Jun 29 20:15:36 2022 +0300

     Fix hscrolling of :align-to when display-line-numbers is in effect

     * src/dispextern.h (struct it): Rename 'tab_offset' member to
     'stretch_adjust'.
     * src/xdisp.c (gui_produce_glyphs, produce_stretch_glyph)
     (display_line): All users of 'tab_offset' changed.
     (produce_stretch_glyph): Fix calculation of ':align-to' when
     line numbers are displayed and the window is hscrolled.
     (calc_pixel_width_or_height): Fix calculation of width of 'space'
     display property when 'display-line-numbers' is turned on, but the
     line number was not yet produced for the current glyph row.
     (Bug#56176)


I'll take a look in more detail tomorrow, but if anyone else wants to 
fix this, go ahead. I also have a bit of Elisp that checks whether this 
feature works, and I should be able to make it into a proper regression 
test with a bit of work.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 18 Jun 2024 11:38:02 +0000
Resent-Message-ID: <handler.71605.B71605.1718710673875 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Jim Porter <jporterbugs@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.1718710673875
          (code B ref 71605); Tue, 18 Jun 2024 11:38:02 +0000
Received: (at 71605) by debbugs.gnu.org; 18 Jun 2024 11:37:53 +0000
Received: from localhost ([127.0.0.1]:42103 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJX9t-0000E3-1s
	for submit <at> debbugs.gnu.org; Tue, 18 Jun 2024 07:37:53 -0400
Received: from eggs.gnu.org ([209.51.188.92]:58640)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1sJX9r-0000Dl-2q
 for 71605 <at> debbugs.gnu.org; Tue, 18 Jun 2024 07:37:52 -0400
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 1sJX9j-0001ow-67; Tue, 18 Jun 2024 07:37:43 -0400
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=B+k1KZFm/NkYI2kCpqerNpOXN9Up5VzoWN9757D1XTM=; b=n3lHk3qY0fIM
 CU9PycoKZoyKiqpGJm68TvRVLtPGJH/pEU6BXa7ye7+WrYqqrUhjJHxT8+ytilrySyQ8t60LtEcmr
 gai9ScZBcDGPzztEjep4zJBrBGkVr/l0u+YCGXKwqFBDRWakkAX6Cem24I/Ub+4r1zYM5fwV65T2j
 rC1TpVMCAncS7cfBbDH9VJzSqN4ygVXJP1KhdzryPmUTvDGc03pJAQzB82tV6BkrSRlDvr42aYt9d
 PimamxMy1b05jJse+5vLUPadk46coRYoBDyepbV0tzAK0z/e6h3l334U8pzQ3euUtS0wBCFBlsVbH
 +jMmfMA6sOnuLF6OjV2eeg==;
Date: Tue, 18 Jun 2024 14:37:40 +0300
Message-Id: <86h6dqqy63.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <66e7c49d-adb6-186f-18f1-33eee9f668ad@HIDDEN> (message from
 Jim Porter on Mon, 17 Jun 2024 11:44:47 -0700)
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <868qz3ssu0.fsf@HIDDEN> <201c2285-012f-fa29-03b5-78a2e26aa134@HIDDEN>
 <86plsfqvme.fsf@HIDDEN> <66e7c49d-adb6-186f-18f1-33eee9f668ad@HIDDEN>
X-Spam-Score: -2.3 (--)
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: Mon, 17 Jun 2024 11:44:47 -0700
> Cc: 71605 <at> debbugs.gnu.org
> From: Jim Porter <jporterbugs@HIDDEN>
> 
> Replying to your individual points below, but in the other subthread, I 
> had the idea that maybe a better way to do this would be for the wrap 
> prefix to always be the first-line prefix but to make it transparent 
> when desired. So for the "* some text" example, the wrap-prefix would be 
> "* " but fontified(?) such that you can't see it.

I don't think I understand how would this do the job.  Surely, the
indentation space should be visible?

> A face transparency attribute might do the trick, and be useful for 
> other things too: 

It isn't universally supported, AFAIK.

> Or maybe :align-to could take a string value, which would mean "use the 
> pixel-width of this string as the value".

How is that different from using a column (as opposed to pixel) value
for :align-to?

> >> If I set that correctly, then the pixel-size should adjust as the
> >> text scales. It wouldn't handle the case where the actual font
> >> changes though.
> > 
> > Why not?
> 
> I was planning to set :relative-width to <first_line_prefix_width> / 
> <width_of_one_space>. If the font changes, the result of that 
> calculation can change.

The idea is to set it to the multiple of the character's width, which
will then scale with the font.

> > If you can pass a window, you can use window-text-pixel-size instead.
> 
> I think 'window-text-pixel-size' would compute the size of the text 
> already in the buffer

Yes, and we have with-current-buffer...




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 18 Jun 2024 12:40:02 +0000
Resent-Message-ID: <handler.71605.B71605.17187143906813 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Jim Porter <jporterbugs@HIDDEN>
Cc: luangruo@HIDDEN, 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.17187143906813
          (code B ref 71605); Tue, 18 Jun 2024 12:40:02 +0000
Received: (at 71605) by debbugs.gnu.org; 18 Jun 2024 12:39:50 +0000
Received: from localhost ([127.0.0.1]:42156 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJY7p-0001lo-MX
	for submit <at> debbugs.gnu.org; Tue, 18 Jun 2024 08:39:49 -0400
Received: from eggs.gnu.org ([209.51.188.92]:54046)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1sJY7l-0001lX-0w
 for 71605 <at> debbugs.gnu.org; Tue, 18 Jun 2024 08:39:48 -0400
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 1sJY7c-0004RX-Rh; Tue, 18 Jun 2024 08:39:36 -0400
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=fwcsFQLr2ia+xbiLpFhGBgPAZG2M1EV20OkaG/qTfMk=; b=f85bqIZq6vm9
 9ASGFQ61aSbX6eILrs7RucbHaoRbDhSz2VTao+SRlQHTK4vzM+pdrlY24smNPCdemKe5+LI67fs8e
 Pn3TlE0qHeP42S2dakGgXS8afYLKioklanfCTtfsnISbkzc2M2I7YsMCpd/hMPauMr8zVV1p/vU4J
 Ad2rSV5g4SNT0ZwNfo8awAD1r5Cuv89Dtq5J6jTYJeaq7gsVJJs1eQxkPGHSG7YwTeA6fdHFqWiMW
 Oi4k8n2N+UNXGGCIyB6/DseitK5pf9HfA7qG1eNNWJCSH/U75eS4Wyc/kI/rVePfT8uhinyNvzvbr
 i89uKyDKjiMIX4fexWmlwA==;
Date: Tue, 18 Jun 2024 15:39:09 +0300
Message-Id: <86bk3yqvbm.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <c71f647c-d8e8-59b8-1fc4-4d270eb85d69@HIDDEN> (message from
 Jim Porter on Mon, 17 Jun 2024 13:08:47 -0700)
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <s54cyof3ayi.fsf@HIDDEN> <835c7897-d276-b0fe-6d1e-8e6a20cac2bb@HIDDEN>
 <4e596683-665e-8e2c-c201-9ddcb476d195@HIDDEN> <86le33qr8d.fsf@HIDDEN>
 <c71f647c-d8e8-59b8-1fc4-4d270eb85d69@HIDDEN>
X-Spam-Score: -2.3 (--)
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: Mon, 17 Jun 2024 13:08:47 -0700
> Cc: luangruo@HIDDEN, 71605 <at> debbugs.gnu.org
> From: Jim Porter <jporterbugs@HIDDEN>
> 
> >> Which actually gives me an
> >> idea... what if the wrap-prefix is just the original text like "* " and
> >> we fontify it to be invisible? It's not part of the buffer and you can't
> >> select it anyway, so it doesn't really matter what the text is so long
> >> as it's not visible.)
> > 
> > I don't think I follow: how is this relevant to the issue at hand?
> 
> I was thinking you could wrap "* this is some text" like so:
> 
>    * this is
>    * some text
> 
> The second "* " would come from the wrap-prefix, but we'd make the 
> foreground transparent (or the same color as the background) so it 
> wouldn't be visible. Then it would always take up the same width as the 
> first "* " because it's the same string with the same font and everything.

If it's transparent, some change in the faces could reveal it, which I
think will be perceived as a bug.  And invisible text cannot take up
screen estate, so I'm not sure how would that help...




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 18 Jun 2024 12:54:02 +0000
Resent-Message-ID: <handler.71605.B71605.17187152258224 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Jim Porter <jporterbugs@HIDDEN>
Cc: luangruo@HIDDEN, 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.17187152258224
          (code B ref 71605); Tue, 18 Jun 2024 12:54:02 +0000
Received: (at 71605) by debbugs.gnu.org; 18 Jun 2024 12:53:45 +0000
Received: from localhost ([127.0.0.1]:42207 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJYLI-00028a-Or
	for submit <at> debbugs.gnu.org; Tue, 18 Jun 2024 08:53:45 -0400
Received: from eggs.gnu.org ([209.51.188.92]:46796)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1sJYLF-00028L-T1
 for 71605 <at> debbugs.gnu.org; Tue, 18 Jun 2024 08:53:43 -0400
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 1sJYL6-0006qQ-PP; Tue, 18 Jun 2024 08:53:32 -0400
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=oWSNdEpZb8HAq+LpDsK15J+4DJqt6SqmvUkN4+JdM/c=; b=RNfGNlZlnNEZ
 y37eVXWvdEMEFFvXx3vXH1T2Wzzw9ZpDjsFTIObQPEOX2fVWeQvInHc1czJ9i6sIR9GbVXucC7W/w
 m/Y5dcBHAO1+oawYvvnUEFNhZM37s8EAEuKAuX8LAQSu4fhmuy4+CPIXPWyQxE7YXMWTLck9071c3
 eStrMco+OQOpUyPltfvusPs6I1weKkrzesrgK6WDTPdGZLyCN/3oN8nGpvGnxfoeTW0wcbmjYIF/e
 fUt3d/8PGZzDcslmH9b0Uo59LtKGUJFz2tO8HOpwXfe7fmuiZcegUuWq98ocvlfOGebHg0qwDzwLC
 mmNXj46cKZydYvfRmokZZg==;
Date: Tue, 18 Jun 2024 15:53:13 +0300
Message-Id: <868qz2quo6.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <f6f70ad9-ae35-7f00-5888-1c0d69bf84b0@HIDDEN> (message from
 Jim Porter on Mon, 17 Jun 2024 23:27:49 -0700)
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <s54cyof3ayi.fsf@HIDDEN> <835c7897-d276-b0fe-6d1e-8e6a20cac2bb@HIDDEN>
 <4e596683-665e-8e2c-c201-9ddcb476d195@HIDDEN> <86le33qr8d.fsf@HIDDEN>
 <c71f647c-d8e8-59b8-1fc4-4d270eb85d69@HIDDEN>
 <9fe82edb-d0f1-faaf-2b1c-6c3aa66832b2@HIDDEN>
 <f6f70ad9-ae35-7f00-5888-1c0d69bf84b0@HIDDEN>
X-Spam-Score: -2.3 (--)
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: Mon, 17 Jun 2024 23:27:49 -0700
> From: Jim Porter <jporterbugs@HIDDEN>
> Cc: luangruo@HIDDEN, 71605 <at> debbugs.gnu.org
> 
> On 6/17/2024 8:02 PM, Jim Porter wrote:
> > Just so others are aware I'm going to try and bisect this. I'll report 
> > back when it's finished.
> 
> Looks like this is the commit that regressed this:
> 
> 
> commit fb3d582e7ba595b7680e2c2adf22c7ab699e5792
> Author: Eli Zaretskii <eliz@HIDDEN>
> Date:   Wed Jun 29 20:15:36 2022 +0300
> 
>      Fix hscrolling of :align-to when display-line-numbers is in effect
> 
>      * src/dispextern.h (struct it): Rename 'tab_offset' member to
>      'stretch_adjust'.
>      * src/xdisp.c (gui_produce_glyphs, produce_stretch_glyph)
>      (display_line): All users of 'tab_offset' changed.
>      (produce_stretch_glyph): Fix calculation of ':align-to' when
>      line numbers are displayed and the window is hscrolled.
>      (calc_pixel_width_or_height): Fix calculation of width of 'space'
>      display property when 'display-line-numbers' is turned on, but the
>      line number was not yet produced for the current glyph row.
>      (Bug#56176)

Thanks.

Unfortunately, it means the current behavior is not a bug, but rather
an unintended consequence of another bugfix.  The above changeset
changed :align-to to count from the beginning of the physical line,
not the screen line.  So, for example, if you have an 80-column line,
the continuation line begins from column 80, not 0.  Thus, something
like ':align-to 4' will never work on continuation lines, because we
got past column 4 long ago...

So I need to think whether and how to restore the capability of using
:align-to in wrap-prefix.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Jim Porter <jporterbugs@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 18 Jun 2024 22:19:02 +0000
Resent-Message-ID: <handler.71605.B71605.171874912112903 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.171874912112903
          (code B ref 71605); Tue, 18 Jun 2024 22:19:02 +0000
Received: (at 71605) by debbugs.gnu.org; 18 Jun 2024 22:18:41 +0000
Received: from localhost ([127.0.0.1]:53874 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJhA1-0003M3-CZ
	for submit <at> debbugs.gnu.org; Tue, 18 Jun 2024 18:18:41 -0400
Received: from mail-pf1-f171.google.com ([209.85.210.171]:44189)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <jporterbugs@HIDDEN>) id 1sJh9z-0003Lk-8n
 for 71605 <at> debbugs.gnu.org; Tue, 18 Jun 2024 18:18:40 -0400
Received: by mail-pf1-f171.google.com with SMTP id
 d2e1a72fcca58-70436048c25so4644107b3a.0
 for <71605 <at> debbugs.gnu.org>; Tue, 18 Jun 2024 15:18:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1718749050; x=1719353850; darn=debbugs.gnu.org;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:mime-version:date:message-id:from:to:cc
 :subject:date:message-id:reply-to;
 bh=fy6P9iGMb0r4NEZjP+aRPky0unZ0i4pHV7F1ZdThpbs=;
 b=WI+Qx20NKbS6WD2r3ybFPWkNhSAuZMSD3E4wpsfDVz7uUG57dg//IOSzYMYAyrVBg6
 CN0oBANmwqMTs0A4recy95upxsEGW3OMCnuocdw3DSbDb6d9rdzg1G4V6OeaGsOJjqED
 yihwlXm9ZMtb0G+FT1tSROnqr9lKvR3YlHDPBdC4W9nIsI98nfwTArn0jL2yK0lZdcpq
 1FsSMT+o2z5SsQLyT6p1GaePFh2pMuz2iAWX2VhhgXXmYYeYBaqW4iwrgSbT1QcIQokb
 7UJMQZcEHnEm+N9InLkpD2cqM2sBYFH71YF6NmqckYsalCWYfgUX3Iawv3JVIvBIaIWS
 4Q2Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1718749050; x=1719353850;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:mime-version:date:message-id
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=fy6P9iGMb0r4NEZjP+aRPky0unZ0i4pHV7F1ZdThpbs=;
 b=liWA5tGJ0xh5NOGwn0Ab/7OXQquKDi2W+hScGxEfkJX4YNEyYqNT0SESCcd912QrZT
 BbKaw847rS2Bxys3Lqsi7bnkciF2Wsp9g5cvB0JqamxxW/MnZYUWJgIgCB2B5LPfutj+
 segfopvkVG7q6+xBXzdzX04iqY0iAkAnesmwO31sLELPByUnfHz1JZWyJ/sHGMIYB+hN
 ScWyLV/5fuy2F7lEqZT0c2FpP4fKnzkoNvRwF3Wz4VGEpscVXJZEy0ouWMCjVHzvDi41
 41B9S74ehhJaJMUEC4Z4lUhIlRJg7bu+DOmPeDyjcugB7hRGIibYCLsEJHKyGiUdlCIq
 5llQ==
X-Gm-Message-State: AOJu0YxWeD8aXUktkLvVH5NA4yKRaAUSpWplYumpfNKDFs3MDJP+pgIt
 0iclcsdf3bG8QpSZK3TM3eb+60ExGegbfkyg5q/Upb44bF7XwFRa
X-Google-Smtp-Source: AGHT+IHo18m24KmA0h0ri1tnNMMV0SP6ERE+03wRK4c6y8Tsqu1LWH7M1lLLEphN5HtpKLQbBL8dsw==
X-Received: by 2002:a05:6a20:ba8f:b0:1b5:9670:33f2 with SMTP id
 adf61e73a8af0-1bcbb5f70b5mr828184637.39.1718749050154; 
 Tue, 18 Jun 2024 15:17:30 -0700 (PDT)
Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com.
 [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id
 d2e1a72fcca58-705cc96731dsm9424965b3a.55.2024.06.18.15.17.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 18 Jun 2024 15:17:29 -0700 (PDT)
Message-ID: <a378b46a-e53a-d7b4-c3c0-e2db1022bc55@HIDDEN>
Date: Tue, 18 Jun 2024 15:17:29 -0700
MIME-Version: 1.0
Content-Language: en-US
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <868qz3ssu0.fsf@HIDDEN> <201c2285-012f-fa29-03b5-78a2e26aa134@HIDDEN>
 <86plsfqvme.fsf@HIDDEN> <66e7c49d-adb6-186f-18f1-33eee9f668ad@HIDDEN>
 <86h6dqqy63.fsf@HIDDEN>
From: Jim Porter <jporterbugs@HIDDEN>
In-Reply-To: <86h6dqqy63.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.0 (/)
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 (-)

On 6/18/2024 4:37 AM, Eli Zaretskii wrote:
> I don't think I understand how would this do the job.  Surely, the
> indentation space should be visible?

I mean the second-line "*  " prefix would be visible but transparent.

>> A face transparency attribute might do the trick, and be useful for
>> other things too:
> 
> It isn't universally supported, AFAIK.

I think it would be feasible to support an opacity level of 1.0 and 0.0. 
opacity=0.0 could just allocate the space for the text but not actually 
draw the glyphs. (Whether we want to go this route is another question.)

>> Or maybe :align-to could take a string value, which would mean "use the
>> pixel-width of this string as the value".
> 
> How is that different from using a column (as opposed to pixel) value
> for :align-to?

A column wouldn't work, since for a variable-pitch font, N columns is 
just N * <canonical character width>. If the actual characters you're 
trying to align to are narrower than the canonical width, they won't 
line up correctly.

Po Lu also raised the issue that in some cases, different frames can be 
displaying the same buffer using different fonts. Conceptually, I'm 
really trying to tell the display engine, "Put a space here exactly as 
wide as <some text> using whatever font you end up using." At the buffer 
level, I can't provide a numeric width here that works everywhere, since 
it might really be multiple numbers, one for each frame.

Providing a number in pixels is also challenging because then I need to 
be able to determine when to recompute that number.

>>>> If I set that correctly, then the pixel-size should adjust as the
>>>> text scales. It wouldn't handle the case where the actual font
>>>> changes though.
>>>
>>> Why not?
>>
>> I was planning to set :relative-width to <first_line_prefix_width> /
>> <width_of_one_space>. If the font changes, the result of that
>> calculation can change.
> 
> The idea is to set it to the multiple of the character's width, which
> will then scale with the font.

Imagine two fonts A and B, where the only difference is that the space 
character in B is twice as wide. So:

     <asterisk_width> = 15
     <space_width_A> = 10
     <space_width_B> = 20
     <first_line_prefix_width_A> = 15 + 10 = 25
     <first_line_prefix_width_B> = 15 + 20 = 35

If I compute :relative-width for font A, the result is 25/10 = 2.5. Then,

     2.5 * <space_width_A> = 25  = <first_line_prefix_width_A>  (good)
     2.5 * <space_width_B> = 50 != <first_line_prefix_width_B>  (bad!)

So we'd need a way of keeping the width in-sync with any font changes.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Wed, 19 Jun 2024 11:47:02 +0000
Resent-Message-ID: <handler.71605.B71605.171879757420603 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Jim Porter <jporterbugs@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.171879757420603
          (code B ref 71605); Wed, 19 Jun 2024 11:47:02 +0000
Received: (at 71605) by debbugs.gnu.org; 19 Jun 2024 11:46:14 +0000
Received: from localhost ([127.0.0.1]:41040 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sJtlW-0005ME-2M
	for submit <at> debbugs.gnu.org; Wed, 19 Jun 2024 07:46:14 -0400
Received: from eggs.gnu.org ([209.51.188.92]:55110)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1sJtlU-0005Lk-HX
 for 71605 <at> debbugs.gnu.org; Wed, 19 Jun 2024 07:46:13 -0400
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 1sJtlK-0005Fi-BR; Wed, 19 Jun 2024 07:46:03 -0400
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=7IU2fjjRUp0yLDQg6dSfkpeg0nzfQvoMw/NhSjwyCPE=; b=CpMxoJD5WY23
 oMj+zD7uCpvJacbe1wce2fcktDgKkuO7HBNSgUf29FVpj2s4GjRkrB5DYDrTQ9XzsEtiM/APLT0nc
 LgFaHQkoEyhV9HN2c8onS9o+9y5SZ6ausCZn83WrPbQdpjx8ZhsXsnyYMfDGPO2I7iGZms+KKkMeQ
 O75RnkaOESlMFP0JUg4Fb8ns6Vg9bsdwbvaMFVA60Q7WlmHNCNTU7m2f6qz65Kt/G+f7WUPQwABrI
 uEKCZRl7uemP5nPNc/2YvUNoTRL9/pFLMjhwLIJd7zhvfTLOltjJw/FIUIDFNWMKTLP+oVwkXFjcl
 xKyW2cjVkzeV6mZeVIX7AA==;
Date: Wed, 19 Jun 2024 14:45:56 +0300
Message-Id: <86iky5p34b.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <a378b46a-e53a-d7b4-c3c0-e2db1022bc55@HIDDEN> (message from
 Jim Porter on Tue, 18 Jun 2024 15:17:29 -0700)
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <868qz3ssu0.fsf@HIDDEN> <201c2285-012f-fa29-03b5-78a2e26aa134@HIDDEN>
 <86plsfqvme.fsf@HIDDEN> <66e7c49d-adb6-186f-18f1-33eee9f668ad@HIDDEN>
 <86h6dqqy63.fsf@HIDDEN> <a378b46a-e53a-d7b4-c3c0-e2db1022bc55@HIDDEN>
X-Spam-Score: -2.3 (--)
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: Tue, 18 Jun 2024 15:17:29 -0700
> Cc: 71605 <at> debbugs.gnu.org
> From: Jim Porter <jporterbugs@HIDDEN>
> 
> On 6/18/2024 4:37 AM, Eli Zaretskii wrote:
> >> Or maybe :align-to could take a string value, which would mean "use the
> >> pixel-width of this string as the value".
> > 
> > How is that different from using a column (as opposed to pixel) value
> > for :align-to?
> 
> A column wouldn't work, since for a variable-pitch font, N columns is 
> just N * <canonical character width>. If the actual characters you're 
> trying to align to are narrower than the canonical width, they won't 
> line up correctly.

If both the first line of the paragraph and the rest are aligned on
that width, they will all line up.  IOW, the idea is to make the text
of all the lines :align-to to the same column number, like this:

  * some text
    some other text

Then you don't care about the actual pixel width of "* ".

> Po Lu also raised the issue that in some cases, different frames can be 
> displaying the same buffer using different fonts. Conceptually, I'm 
> really trying to tell the display engine, "Put a space here exactly as 
> wide as <some text> using whatever font you end up using." At the buffer 
> level, I can't provide a numeric width here that works everywhere, since 
> it might really be multiple numbers, one for each frame.

IMNSHO, this is over-engineering, as we already have the means to do
the same with existing features.  Asking the display engine to measure
and record somewhere the pixel width of a string is a significant
complication to how the display code works, because the display
routines can be called to start their job at any arbitrary place in
the buffer.

> Providing a number in pixels is also challenging because then I need to 
> be able to determine when to recompute that number.

Which is why I didn't suggest that.  I suggested columns because they
scale with text-scale-adjust.

> >>>> If I set that correctly, then the pixel-size should adjust as the
> >>>> text scales. It wouldn't handle the case where the actual font
> >>>> changes though.
> >>>
> >>> Why not?
> >>
> >> I was planning to set :relative-width to <first_line_prefix_width> /
> >> <width_of_one_space>. If the font changes, the result of that
> >> calculation can change.
> > 
> > The idea is to set it to the multiple of the character's width, which
> > will then scale with the font.
> 
> Imagine two fonts A and B, where the only difference is that the space 
> character in B is twice as wide. So:
> 
>      <asterisk_width> = 15
>      <space_width_A> = 10
>      <space_width_B> = 20
>      <first_line_prefix_width_A> = 15 + 10 = 25
>      <first_line_prefix_width_B> = 15 + 20 = 35
> 
> If I compute :relative-width for font A, the result is 25/10 = 2.5. Then,
> 
>      2.5 * <space_width_A> = 25  = <first_line_prefix_width_A>  (good)
>      2.5 * <space_width_B> = 50 != <first_line_prefix_width_B>  (bad!)
> 
> So we'd need a way of keeping the width in-sync with any font changes.

I don't understand the example.  If these are two different
paragraphs, then their indentation cannot be guaranteed to be the same
anyway, because no one can assure you all the paragraphs will use the
same font.  So whatever you mean by <width_of_one_space>, it will
always be different for different fonts, and I don't see how this can
be solved for an arbitrary combination of fonts.

So my suggestion is to go back to the simpler idea of using :align-to
with an absolute value, either in pixels or in columns (which AFAIR is
interpreted in units of the frame's default font's width), and if
needed augment that by recalculation when necessary.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Jim Porter <jporterbugs@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Wed, 19 Jun 2024 19:55:01 +0000
Resent-Message-ID: <handler.71605.B71605.171882688622028 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.171882688622028
          (code B ref 71605); Wed, 19 Jun 2024 19:55:01 +0000
Received: (at 71605) by debbugs.gnu.org; 19 Jun 2024 19:54:46 +0000
Received: from localhost ([127.0.0.1]:56950 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sK1OI-0005jD-6h
	for submit <at> debbugs.gnu.org; Wed, 19 Jun 2024 15:54:46 -0400
Received: from mail-pj1-f48.google.com ([209.85.216.48]:44465)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <jporterbugs@HIDDEN>) id 1sK1OG-0005ir-7g
 for 71605 <at> debbugs.gnu.org; Wed, 19 Jun 2024 15:54:44 -0400
Received: by mail-pj1-f48.google.com with SMTP id
 98e67ed59e1d1-2c2e31d319eso172942a91.1
 for <71605 <at> debbugs.gnu.org>; Wed, 19 Jun 2024 12:54:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1718826815; x=1719431615; darn=debbugs.gnu.org;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:mime-version:date:message-id:from:to:cc
 :subject:date:message-id:reply-to;
 bh=6a+D7dP2K2px5U9+dljz+sSnNpwAttl570JTnJkg2+Q=;
 b=evFoWp5/S9tB2TIPqYeWaj6N87yvny5J+y87KC5eB7F4gTkl0d7UyrYNRbA4zHBkwv
 EnqYZwjdJ/Od/A3Jen5tXPN2ArJ0e/syimomlBX3unyYh/rIr42BY20FGe4SPoJ4EVjJ
 +IcvMRfpuV1lPvdLk4dBz48gWXyGzP55Th8UxvI3PPjvugcDlxtFP/RtBke3V+VU6RqU
 CZpFUfJsNgMkRERqjNu0vEeYDFY1/E4VISnO4ajiSIscrhW7++xZP+111bzcLKXoJGLb
 PpIeHwWjbNuYJbOHecg+vvvaQ2dqZ1KA0iF3JZchD2xhvGhs1F74zLOEeN7lCkW4YMZw
 0L4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1718826815; x=1719431615;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:mime-version:date:message-id
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=6a+D7dP2K2px5U9+dljz+sSnNpwAttl570JTnJkg2+Q=;
 b=uvMJXgXakZP0tKtP1yb02rdn+qlMJjIs2amnexcjXioEEJO08R7y15j0WFVBRg6Tw2
 rMLn18MpQdxCFsl3t84SvJPMglyZMwM3cycxVdBDk2S2/QYWXy/OYnlyKErMEA5kPexv
 39ZnPVstie0voG0ztZMRZOpy5YcWkYOReJjKfpSSWQiznF6cfBym6pBni5txYMt7DlYX
 awLj69U+bSyXq+C3mup1PjX0fHSVlKDREfSynUIezYEPIe8RHf4aIqkSD3N+I+p4Qi/n
 hDCr/RA/PjcgkeIgF79fQTonqHX72YX7Dt/268mKP5dcyYH/lv1rzw+n1I3fURw9jLFd
 mPig==
X-Gm-Message-State: AOJu0YwB22BO1v0g8oIzJ7EBTD7yBloLXR7NyjtjNF7cyVn2AXjlLlRe
 TA7+GvhtERrXNvIzjefATYLDzFvBcN01xj2eP3PE9bbXY/JHc9gX
X-Google-Smtp-Source: AGHT+IHkezksv0UZiAMGvLnk/rfiKockcWYBScqgvLnq4Fzt1FDxNvPjlh+IGh3lQc8oxDGojAB6eA==
X-Received: by 2002:a17:90b:4f84:b0:2c7:da20:524b with SMTP id
 98e67ed59e1d1-2c7da205691mr1092543a91.10.1718826814807; 
 Wed, 19 Jun 2024 12:53:34 -0700 (PDT)
Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com.
 [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id
 98e67ed59e1d1-2c7e55db59dsm26431a91.27.2024.06.19.12.53.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 19 Jun 2024 12:53:34 -0700 (PDT)
Message-ID: <8269125b-7e9c-ffde-be9e-4a07c42ce6a5@HIDDEN>
Date: Wed, 19 Jun 2024 12:53:33 -0700
MIME-Version: 1.0
Content-Language: en-US
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <868qz3ssu0.fsf@HIDDEN> <201c2285-012f-fa29-03b5-78a2e26aa134@HIDDEN>
 <86plsfqvme.fsf@HIDDEN> <66e7c49d-adb6-186f-18f1-33eee9f668ad@HIDDEN>
 <86h6dqqy63.fsf@HIDDEN> <a378b46a-e53a-d7b4-c3c0-e2db1022bc55@HIDDEN>
 <86iky5p34b.fsf@HIDDEN>
From: Jim Porter <jporterbugs@HIDDEN>
In-Reply-To: <86iky5p34b.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.0 (/)
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 (-)

On 6/19/2024 4:45 AM, Eli Zaretskii wrote:
> If both the first line of the paragraph and the rest are aligned on
> that width, they will all line up.  IOW, the idea is to make the text
> of all the lines :align-to to the same column number, like this:
> 
>    * some text
>      some other text
> 
> Then you don't care about the actual pixel width of "* ".

Just so I'm sure I understand this: the idea is that the buffer's 
contents are "* some text some other text" and then we set the :align-to 
property on "some text some other text" so that the result is displayed 
like this?

      +---- Here is the align-to column
      v
   * _some text
   ___some other text

The underscores represent the space added by :align-to. In practice, the 
first line might not have any extra space from :align-to, but the 
pixel-width of "* " could be less than 2 * <canonical character width> 
for variable-pitch fonts.

I think that would work, provided :align-to were fixed so that it could 
handle wrapping again. (And so long as we're ok with there being a bit 
of extra space after the first-line prefix when using some fonts, but I 
don't see why that would be an issue.)




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 20 Jun 2024 04:59:02 +0000
Resent-Message-ID: <handler.71605.B71605.17188595301825 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Jim Porter <jporterbugs@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.17188595301825
          (code B ref 71605); Thu, 20 Jun 2024 04:59:02 +0000
Received: (at 71605) by debbugs.gnu.org; 20 Jun 2024 04:58:50 +0000
Received: from localhost ([127.0.0.1]:43436 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sK9sn-0000TN-Px
	for submit <at> debbugs.gnu.org; Thu, 20 Jun 2024 00:58:50 -0400
Received: from eggs.gnu.org ([209.51.188.92]:55868)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1sK9sl-0000T6-KV
 for 71605 <at> debbugs.gnu.org; Thu, 20 Jun 2024 00:58:48 -0400
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 1sK9sc-00028c-MJ; Thu, 20 Jun 2024 00:58:38 -0400
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=GS2o5GIyQa9GhAbbZb+8MLokIFnvTxDPLzYJCVXbdW0=; b=R6KZZ3ldSr/f
 acvB2E4NSQwRy9uZSTXfoy8EsvrQUQFwi2yEPXT40Otu0D/jxBmMpZcw1Idb+DjMsAS7L8D/Hcx3G
 2n1pcPB+WNxJADD7oLnh+qwNhyyR/Hb45hFZ/Ss8qZBMS1yuDHRt9CYeSQINUXgXABKPD45tWm9eF
 SGPGDGdJN5Dql01/7lyynHMraz+6t5ZSE6wLHMDHLF/wEaDbi4yKL7f7BFSNvjJVdH5E94srwWWta
 iGoGryV00oxjd4EcCGm7zlsEd/JfVpvEbTZcvC3RzcRkznAHDAVKyWQFCWtoQvaqN/SzI3HXU54Nl
 VJQ7Hgs6fX4kP7wNuZa0eQ==;
Date: Thu, 20 Jun 2024 07:58:36 +0300
Message-Id: <86o77wnrb7.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <8269125b-7e9c-ffde-be9e-4a07c42ce6a5@HIDDEN> (message from
 Jim Porter on Wed, 19 Jun 2024 12:53:33 -0700)
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <868qz3ssu0.fsf@HIDDEN> <201c2285-012f-fa29-03b5-78a2e26aa134@HIDDEN>
 <86plsfqvme.fsf@HIDDEN> <66e7c49d-adb6-186f-18f1-33eee9f668ad@HIDDEN>
 <86h6dqqy63.fsf@HIDDEN> <a378b46a-e53a-d7b4-c3c0-e2db1022bc55@HIDDEN>
 <86iky5p34b.fsf@HIDDEN> <8269125b-7e9c-ffde-be9e-4a07c42ce6a5@HIDDEN>
X-Spam-Score: -2.3 (--)
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, 19 Jun 2024 12:53:33 -0700
> Cc: 71605 <at> debbugs.gnu.org
> From: Jim Porter <jporterbugs@HIDDEN>
> 
> On 6/19/2024 4:45 AM, Eli Zaretskii wrote:
> > If both the first line of the paragraph and the rest are aligned on
> > that width, they will all line up.  IOW, the idea is to make the text
> > of all the lines :align-to to the same column number, like this:
> > 
> >    * some text
> >      some other text
> > 
> > Then you don't care about the actual pixel width of "* ".
> 
> Just so I'm sure I understand this: the idea is that the buffer's 
> contents are "* some text some other text" and then we set the :align-to 
> property on "some text some other text" so that the result is displayed 
> like this?
> 
>       +---- Here is the align-to column
>       v
>    * _some text
>    ___some other text

Yes.

> The underscores represent the space added by :align-to. In practice, the 
> first line might not have any extra space from :align-to, but the 
> pixel-width of "* " could be less than 2 * <canonical character width> 
> for variable-pitch fonts.

The value calculated for :align-to needs to make sure that never
happens.

> I think that would work, provided :align-to were fixed so that it could 
> handle wrapping again.

Stay tuned.

> (And so long as we're ok with there being a bit of extra space after
> the first-line prefix when using some fonts, but I don't see why
> that would be an issue.)

We _should_ be ok with some extra white space, because that's what I
see in word processors all around me.  Their indentation of the
itemized lists always indents by more than just one SPC after the item
symbol (bullet or number or letter).




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Jim Porter <jporterbugs@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 20 Jun 2024 05:39:02 +0000
Resent-Message-ID: <handler.71605.B71605.17188619257454 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.17188619257454
          (code B ref 71605); Thu, 20 Jun 2024 05:39:02 +0000
Received: (at 71605) by debbugs.gnu.org; 20 Jun 2024 05:38:45 +0000
Received: from localhost ([127.0.0.1]:44338 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sKAVR-0001wA-5E
	for submit <at> debbugs.gnu.org; Thu, 20 Jun 2024 01:38:45 -0400
Received: from mail-pf1-f181.google.com ([209.85.210.181]:46179)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <jporterbugs@HIDDEN>) id 1sKAVP-0001vr-Cz
 for 71605 <at> debbugs.gnu.org; Thu, 20 Jun 2024 01:38:43 -0400
Received: by mail-pf1-f181.google.com with SMTP id
 d2e1a72fcca58-7062c0ee254so478656b3a.0
 for <71605 <at> debbugs.gnu.org>; Wed, 19 Jun 2024 22:38:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1718861854; x=1719466654; darn=debbugs.gnu.org;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:mime-version:date:message-id:from:to:cc
 :subject:date:message-id:reply-to;
 bh=xdG1MO0ZRXkYpWl9W+bnWrqLtvPXIEIGstkKYfbtBJg=;
 b=AFbNUVVuT8mbBPQMqXY6vP2buidtmCgVJd+GZEEHDIcBrdF0vPUcC+GP0PopuhdYiu
 ep7V5GiQizhH86FmAYbJ3DBWQUUiKD/ABygtB4XeMXvyKjq4YwOPGDLUAai7x2AVEe3J
 ZVuECo8aW5yzxRwXvKVVRmo6o4FNRYWFfVGqUAoeYMTA0Vv3gOobetT+rloFhS9yYaAY
 hLtKzkcpdJzvUQf+Cru01SJ08zx+R8sn9N1bmFwNcapEfy0Pg8brkwEChTyifi1RZ4Sy
 WOibMt6AiJAJqU5UafE4BW2uDOGXkDWR1Mwgk/Q7OJZPj+H3+A17/DPu9ctCHSctQP1s
 bt/g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1718861854; x=1719466654;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:mime-version:date:message-id
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=xdG1MO0ZRXkYpWl9W+bnWrqLtvPXIEIGstkKYfbtBJg=;
 b=B5dvLkGjEX0LMqrpE3H09uXKdEGP2D6BCbY+1OWLlUey/wOszZPpWL6s64jriBquNW
 Kta+k89qpO4P2C1ZSnFXSMvhRqbNXkx108qaVdv5xCH2PijVCzlwtgyg9KI9LUabyhr2
 tOtLC4qx7j81BCmdlBsR8tixa+fh0hkvHagiv+r485J0KEwNyy8TxhP8tteQzIFQ8qUN
 Dsv7uykFl3h1uU1QOM5nMCZP4r54ZzLg58kOSMbb8CHTPAs19AaYzH0qTSB450O3wtDF
 jxKEFqLF4mAeBszJ1GmEhUVzFuaoBcmQQfe908ONv5bKYDJR4YpWxSZCUpiFX5r0O36R
 KUkg==
X-Gm-Message-State: AOJu0Yy1ovjQthHs0IwyYL17TOySDuNinKfcJlq9vcfLHFkcBC4SHyal
 z/r1NZ6x/UsLqA5EVZT2JSiKl5xqXqyw+JIl/VODk/tZ3wcekQO1
X-Google-Smtp-Source: AGHT+IGaZ6x+h72T2NZp4WuK1tPReD4YHne3OrvII8kkRoNSJzQTElb/MlYBpWzQ0iyFfl+KWFigcA==
X-Received: by 2002:a05:6a20:bca9:b0:1b3:fa57:647f with SMTP id
 adf61e73a8af0-1bcbb5c5a1fmr4338494637.31.1718861854019; 
 Wed, 19 Jun 2024 22:37:34 -0700 (PDT)
Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com.
 [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id
 98e67ed59e1d1-2c7e55e0cd4sm725510a91.25.2024.06.19.22.37.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 19 Jun 2024 22:37:33 -0700 (PDT)
Message-ID: <060e1362-a206-4c88-b49f-60e4f5da7238@HIDDEN>
Date: Wed, 19 Jun 2024 22:37:33 -0700
MIME-Version: 1.0
Content-Language: en-US
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <868qz3ssu0.fsf@HIDDEN> <201c2285-012f-fa29-03b5-78a2e26aa134@HIDDEN>
 <86plsfqvme.fsf@HIDDEN> <66e7c49d-adb6-186f-18f1-33eee9f668ad@HIDDEN>
 <86h6dqqy63.fsf@HIDDEN> <a378b46a-e53a-d7b4-c3c0-e2db1022bc55@HIDDEN>
 <86iky5p34b.fsf@HIDDEN> <8269125b-7e9c-ffde-be9e-4a07c42ce6a5@HIDDEN>
 <86o77wnrb7.fsf@HIDDEN>
From: Jim Porter <jporterbugs@HIDDEN>
In-Reply-To: <86o77wnrb7.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.0 (/)
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 (-)

On 6/19/2024 9:58 PM, Eli Zaretskii wrote:
>> I think that would work, provided :align-to were fixed so that it could
>> handle wrapping again.
> 
> Stay tuned.

Thanks. No rush on this, since Emacs 30 takes priority over this small 
nice-to-have enhancement. (I do have a patch for EWW that would benefit 
from fixing this bug, but that too can wait.)




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode'
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 20 Jun 2024 10:00:02 +0000
Resent-Message-ID: <handler.71605.B71605.171887754317585 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 71605
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Jim Porter <jporterbugs@HIDDEN>
Cc: 71605 <at> debbugs.gnu.org
Received: via spool by 71605-submit <at> debbugs.gnu.org id=B71605.171887754317585
          (code B ref 71605); Thu, 20 Jun 2024 10:00:02 +0000
Received: (at 71605) by debbugs.gnu.org; 20 Jun 2024 09:59:03 +0000
Received: from localhost ([127.0.0.1]:50918 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sKEZK-0004ZR-B3
	for submit <at> debbugs.gnu.org; Thu, 20 Jun 2024 05:59:02 -0400
Received: from eggs.gnu.org ([209.51.188.92]:58118)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1sKEZI-0004Z4-9P
 for 71605 <at> debbugs.gnu.org; Thu, 20 Jun 2024 05:59:00 -0400
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 1sKEZ9-0006D4-76; Thu, 20 Jun 2024 05:58:51 -0400
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=bMQfOXyJceCMPNvymhleKyCg3GJNLuNAQob5cXu3lh0=; b=D1sRg8KQQfrB
 mJTd+tZfe+CY9tCApdLju2AfDF9plmduBv1DbvLfMtSnH8W7yx9DE83+ZfpoGHd7/rZtqiiVXEKTd
 7TlEqRYW3eia02MNFoB+s11tACjGnAY8X732WNOJ7xEt400gcbtQi+6C788jDWDhL803leLG8pgjM
 8qZNVFCmW1bIMJiT8R9nQo/HAb1sgjOr6Pmm0MlmU56pgbhxKeX5Vw/EJYLpfIePEG69liEsytj4T
 Lmqno/B3LRrqpWk7g6Jm3HzMu9AVVzQqMr+BaXJq0UZTekAaWAv6ApdF0Fb+B/W1hBlqazThYz7Ic
 kVxvnZv2U/PlXgbuthz2Iw==;
Date: Thu, 20 Jun 2024 12:58:48 +0300
Message-Id: <86a5jgndev.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <060e1362-a206-4c88-b49f-60e4f5da7238@HIDDEN> (message from
 Jim Porter on Wed, 19 Jun 2024 22:37:33 -0700)
References: <bbe630e2-0354-9d56-9090-dad7c1a4d43e@HIDDEN>
 <868qz3ssu0.fsf@HIDDEN> <201c2285-012f-fa29-03b5-78a2e26aa134@HIDDEN>
 <86plsfqvme.fsf@HIDDEN> <66e7c49d-adb6-186f-18f1-33eee9f668ad@HIDDEN>
 <86h6dqqy63.fsf@HIDDEN> <a378b46a-e53a-d7b4-c3c0-e2db1022bc55@HIDDEN>
 <86iky5p34b.fsf@HIDDEN> <8269125b-7e9c-ffde-be9e-4a07c42ce6a5@HIDDEN>
 <86o77wnrb7.fsf@HIDDEN> <060e1362-a206-4c88-b49f-60e4f5da7238@HIDDEN>
X-Spam-Score: -2.3 (--)
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, 19 Jun 2024 22:37:33 -0700
> Cc: 71605 <at> debbugs.gnu.org
> From: Jim Porter <jporterbugs@HIDDEN>
> 
> On 6/19/2024 9:58 PM, Eli Zaretskii wrote:
> >> I think that would work, provided :align-to were fixed so that it could
> >> handle wrapping again.
> > 
> > Stay tuned.
> 
> Thanks. No rush on this, since Emacs 30 takes priority over this small 
> nice-to-have enhancement. (I do have a patch for EWW that would benefit 
> from fixing this bug, but that too can wait.)

Should be fixed now on the master branch.





Last modified: Thu, 20 Jun 2024 10:00:02 UTC

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