From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: David Ponce via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#72689: 31.0.50; Proposal to improve string-pixel-width Date: Mon, 19 Aug 2024 10:49:05 +0200 Message-ID: References: <54d1d667-55d0-41fc-9eec-38b3881d799b@orange.fr> <86bk1q1m0l.fsf@gnu.org> <8634n219b1.fsf@gnu.org> Reply-To: David Ponce Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------mXmucp7oBVioNV9840LnjaKw" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="20591"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird Cc: 72689@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Aug 19 10:50:23 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sfy5m-0005CS-UT for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 19 Aug 2024 10:50:23 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sfy5S-0001Yk-P2; Mon, 19 Aug 2024 04:50:02 -0400 Original-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 ) id 1sfy4n-0001TQ-2X for bug-gnu-emacs@gnu.org; Mon, 19 Aug 2024 04:49:21 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sfy4m-00064O-P3 for bug-gnu-emacs@gnu.org; Mon, 19 Aug 2024 04:49:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=In-Reply-To:From:References:MIME-Version:Date:To:Subject; bh=LyORy519p2YRKWB8nm15/Vtn+f2lT0QbYNalRbPfax4=; b=uGtWDF/TQLk08zBP95b06BXatRU5qBqIWKiJX6EinK0C9ApB19CFoObpuu9U9Ucvprvc/V5H7i46ncYSWyzgQQCqfRFqQUKol5vUI3Vd0KjQ/6muyg2xjP/eS7eMQxYzNsgq8ZfSv3i9OjYAy7OuJEUxH4MOFFNBlJu7pifwsxkl+p4zpgKbibVttmf0E/CilX5Q05Hn9ZS1UNGQj/2BI+XCwgjyZAwKmefNH+4LQXGSUqFg1jb2oNoeTSizzMqv7u2cuhUey1ZcMvNOHOwpXZeYxKI64zk9gYJS4ppViWoB8b/h7ppFzMlqIbaO/S7UNBnrnGqPdAlIAmkY4xxbgg==; Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sfy5R-00051R-Sd for bug-gnu-emacs@gnu.org; Mon, 19 Aug 2024 04:50:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: David Ponce Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 19 Aug 2024 08:50:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72689 X-GNU-PR-Package: emacs Original-Received: via spool by 72689-submit@debbugs.gnu.org id=B72689.172405739219286 (code B ref 72689); Mon, 19 Aug 2024 08:50:01 +0000 Original-Received: (at 72689) by debbugs.gnu.org; 19 Aug 2024 08:49:52 +0000 Original-Received: from localhost ([127.0.0.1]:57642 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sfy5I-00050z-0Q for submit@debbugs.gnu.org; Mon, 19 Aug 2024 04:49:52 -0400 Original-Received: from smtp-25.smtpout.orange.fr ([80.12.242.25]:53605 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sfy5F-00050o-Hq for 72689@debbugs.gnu.org; Mon, 19 Aug 2024 04:49:50 -0400 Original-Received: from [192.168.1.21] ([2.7.225.247]) by smtp.orange.fr with ESMTPA id fy4Xs0oCauuNAfy4XsCy0w; Mon, 19 Aug 2024 10:49:06 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1724057346; bh=LyORy519p2YRKWB8nm15/Vtn+f2lT0QbYNalRbPfax4=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=Ssjd+gfyYrRk8zy3+a+wgVN+ZiYE5/SX+Xa9oBNCj/VWCOLl+q4nnyyU1Is07MjWB 32o86yChdHcnES8QjIvs/MTw8IIS9DQ/Q1Rgp0mKp67/AUF7iKokFdc+8+SPyipN1g /AIw9EJMA5sWFtkZo9Rt59t+OARC8Af22HfiqUV+mB5U+1HXBVJOx89CqcJUynXi8K /dWYooj8g/a7dD2ys1vnjGVKGieknLWL0YqOebX1vcCDuITEIjzPV7H1PUR2l+/jMy rz4WzCIE/yTaLa25Wu1HGKhSCboyUcoPWeTdFbFHyYpNFLJdccycIEVuAFfPMhbQ3P KQaJWM0J9LMxA== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Mon, 19 Aug 2024 10:49:06 +0200 X-ME-IP: 2.7.225.247 Content-Language: fr, en-US In-Reply-To: <8634n219b1.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:290377 Archived-At: This is a multi-part message in MIME format. --------------mXmucp7oBVioNV9840LnjaKw Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 18/08/2024 11:15 AM, Eli Zaretskii wrote: [...]> I think you understood the issue, and just creating a new buffer if > the "normal" one is "taken" should be good enough. I don't expect > this situation to be a frequent one, so creating too many buffers > should not be a danger. Thanks! Please, find attached a revised V01 patch that implements your suggestion. I finally opted to keep only one function, because setting a few buffer-local variables on each call has not a significant impact on performance. --------------mXmucp7oBVioNV9840LnjaKw Content-Type: text/x-patch; charset=UTF-8; name="improve-string-pixel-width-V01.patch" Content-Disposition: attachment; filename="improve-string-pixel-width-V01.patch" Content-Transfer-Encoding: base64 MjAyNC0wOC0xOSAgRGF2aWQgUG9uY2UgIDxkYV92aWRAb3JhbmdlLmZyPgoKCVR3ZWFrIHRo ZSBpbXBsZW1lbnRhdGlvbiBvZiBzdHJpbmctcGl4ZWwtd2lkdGggdG8gcnVuIGZhc3RlciBh bmQKCXVzZSBsZXNzIG1lbW9yeS4gIEFsc28gY2F0ZXIgZm9yIHRoZSBjYXNlIHdoZXJlIG1v cmUgdGhhbiBvbmUKCWV4ZWN1dGlvbiB0aHJlYWQgY2FsbHMgdGhlIGZ1bmN0aW9uIChidWcj NzI2ODkpLgoKCSogc3Vici14LmVsIChzdHJpbmctLXBpeGVsLXdpZHRoLWJ1ZmZlcik6IE5l dyB2YXJpYWJsZS4KCShzdHJpbmctLXBpeGVsLXdpZHRoKTogVXNlIGl0LiAgQ3JlYXRlIGEg bmV3IHdvcmtpbmcgYnVmZmVyIHdoZW4KCXBhcmFsbGVsIHJ1biBpcyBkZXRlY3RlZC4gIFBy ZWZlciBgcmVtb3ZlLXRleHQtcHJvcGVydGllcycgdG8KCWBwcm9wZXJ0aXplJyB0byBhdm9p ZCBjcmVhdGluZyBhIG5ldyBzdHJpbmcgb24gZWFjaCBjYWxsLgoKZGlmZiAtLWdpdCBhL2xp c3AvZW1hY3MtbGlzcC9zdWJyLXguZWwgYi9saXNwL2VtYWNzLWxpc3Avc3Vici14LmVsCmlu ZGV4IDA1OGMwNmJjNWY2Li5iNjg4ZDE3OWRhNCAxMDA2NDQKLS0tIGEvbGlzcC9lbWFjcy1s aXNwL3N1YnIteC5lbAorKysgYi9saXNwL2VtYWNzLWxpc3Avc3Vici14LmVsCkBAIC0zMzYs NiArMzM2LDggQEAgbmFtZWQtbGV0CiAgICAgICAoY2wtbGFiZWxzICgoLG5hbWUgLGZhcmdz IC4gLGJvZHkpKSAjJyxuYW1lKQogICAgICAgLiAsYWFyZ3MpKSkKIAorKGRlZnZhciBzdHJp bmctLXBpeGVsLXdpZHRoLWJ1ZmZlciBuaWwpCisKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4g c3RyaW5nLXBpeGVsLXdpZHRoIChzdHJpbmcgJm9wdGlvbmFsIGJ1ZmZlcikKICAgIlJldHVy biB0aGUgd2lkdGggb2YgU1RSSU5HIGluIHBpeGVscy4KQEAgLTM0NiwyMSArMzQ4LDQ1IEBA IHN0cmluZy1waXhlbC13aWR0aAogICAgICAgMAogICAgIDs7IEtlZXBpbmcgYSB3b3JrIGJ1 ZmZlciBhcm91bmQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBjcmVhdGluZyBhCiAgICAgOzsg bmV3IHRlbXBvcmFyeSBidWZmZXIuCi0gICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1i dWZmZXItY3JlYXRlICIgKnN0cmluZy1waXhlbC13aWR0aCoiKQotICAgICAgOzsgSWYgYGRp c3BsYXktbGluZS1udW1iZXJzJyBpcyBlbmFibGVkIGluIGludGVybmFsIGJ1ZmZlcnMKLSAg ICAgIDs7IChlLmcuIGdsb2JhbGx5KSwgaXQgYnJlYWtzIHdpZHRoIGNhbGN1bGF0aW9uIChi dWcjNTkzMTEpCi0gICAgICAoc2V0cS1sb2NhbCBkaXNwbGF5LWxpbmUtbnVtYmVycyBuaWwp Ci0gICAgICAoZGVsZXRlLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkKLSAgICAg IDs7IERpc2FibGUgbGluZS1wcmVmaXggYW5kIHdyYXAtcHJlZml4LCBmb3IgdGhlIHNhbWUg cmVhc29uLgotICAgICAgKHNldHEgbGluZS1wcmVmaXggbmlsCi0JICAgIHdyYXAtcHJlZml4 IG5pbCkKLSAgICAgIChpZiBidWZmZXIKLSAgICAgICAgICAoc2V0cS1sb2NhbCBmYWNlLXJl bWFwcGluZy1hbGlzdAotICAgICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVm ZmVyIGJ1ZmZlcgotICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS1yZW1hcHBpbmctYWxp c3QpKQotICAgICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnZmFjZS1yZW1hcHBpbmctYWxp c3QpKQotICAgICAgKGluc2VydCAocHJvcGVydGl6ZSBzdHJpbmcgJ2xpbmUtcHJlZml4IG5p bCAnd3JhcC1wcmVmaXggbmlsKSkKLSAgICAgIChjYXIgKGJ1ZmZlci10ZXh0LXBpeGVsLXNp emUgbmlsIG5pbCB0KSkpKSkKKyAgICAod2l0aC1jdXJyZW50LWJ1ZmZlcgorICAgICAgICAo b3IgKGlmIChidWZmZXItbGl2ZS1wIHN0cmluZy0tcGl4ZWwtd2lkdGgtYnVmZmVyKQorICAg ICAgICAgICAgICAgIDs7IENoZWNrIGlmIHdvcmsgYnVmZmVyIGlzIG5vdCB1c2VkIGJ5Cisg ICAgICAgICAgICAgICAgOzsgYW5vdGhlciBwYXJhbGxlbCBydW4gKGJ1ZyM3MjY4OSkuICBU aGF0CisgICAgICAgICAgICAgICAgOzsgaXMsIGlmIGBzdHJpbmctLXBpeGVsLXdpZHRoLWJ1 ZmZlcicgaGFzIG5vCisgICAgICAgICAgICAgICAgOzsgYnVmZmVyLWxvY2FsIHZhbHVlLCBp biB3aGljaCBjYXNlIHRoZSBmdW5jdGlvbgorICAgICAgICAgICAgICAgIDs7IGBidWZmZXIt bG9jYWwtdmFsdWUnIHJldHVybnMgaXRzIGdsb2JhbCB2YWx1ZSwKKyAgICAgICAgICAgICAg ICA7OyBlcXVhbCB0byB0aGUgd29yayBidWZmZXIuICBPdGhlcndpc2UsIHdoZW4gdGhlCisg ICAgICAgICAgICAgICAgOzsgd29yayBidWZmZXIgaXMgImJ1c3kiLCB0aGUgYnVmZmVyLWxv Y2FsIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgOzsgYHN0cmluZy0tcGl4ZWwtd2lkdGgt YnVmZmVyJyBpcyBuaWwuCisgICAgICAgICAgICAgICAgKGJ1ZmZlci1sb2NhbC12YWx1ZSAn c3RyaW5nLS1waXhlbC13aWR0aC1idWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cmluZy0tcGl4ZWwtd2lkdGgtYnVmZmVyKSkKKyAgICAgICAgICAgIDs7 IENyZWF0ZSBhIG5ldyB3b3JrIGJ1ZmZlciBpZiBjdXJyZW50IGlzICJidXN5Ii4KKyAgICAg ICAgICAgIChzZXRxIHN0cmluZy0tcGl4ZWwtd2lkdGgtYnVmZmVyCisgICAgICAgICAgICAg ICAgICAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiICpzdHJpbmctcGl4ZWwtd2lkdGgqIiB0KSkp CisgICAgICA7OyBNYXJrIGJ1ZmZlciBhcyAiYnVzeSIuCisgICAgICAoc2V0cS1sb2NhbCBz dHJpbmctLXBpeGVsLXdpZHRoLWJ1ZmZlciBuaWwpCisgICAgICAodW53aW5kLXByb3RlY3QK KyAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgIDs7IElmIGBkaXNwbGF5LWxpbmUtbnVt YmVycycgaXMgZW5hYmxlZCBpbiBpbnRlcm5hbAorICAgICAgICAgICAgOzsgYnVmZmVycyAo ZS5nLiBnbG9iYWxseSksIGl0IGJyZWFrcyB3aWR0aCBjYWxjdWxhdGlvbgorICAgICAgICAg ICAgOzsgKGJ1ZyM1OTMxMSkuICBEaXNhYmxlIGBsaW5lLXByZWZpeCcgYW5kIGB3cmFwLXBy ZWZpeCcsCisgICAgICAgICAgICA7OyBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAg ICAgKHNldHEgZGlzcGxheS1saW5lLW51bWJlcnMgbmlsCisgICAgICAgICAgICAgICAgICBs aW5lLXByZWZpeCBuaWwgd3JhcC1wcmVmaXggbmlsKQorICAgICAgICAgICAgKGlmIGJ1ZmZl cgorICAgICAgICAgICAgICAgIChzZXRxLWxvY2FsIGZhY2UtcmVtYXBwaW5nLWFsaXN0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVy CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLXJlbWFwcGluZy1hbGlzdCkp CisgICAgICAgICAgICAgIChraWxsLWxvY2FsLXZhcmlhYmxlICdmYWNlLXJlbWFwcGluZy1h bGlzdCkpCisgICAgICAgICAgICAoZXJhc2UtYnVmZmVyKQorICAgICAgICAgICAgKGluc2Vy dCBzdHJpbmcpCisgICAgICAgICAgICA7OyBQcmVmZXIgYHJlbW92ZS10ZXh0LXByb3BlcnRp ZXMnIHRvIGBwcm9wZXJ0aXplJyB0byBhdm9pZAorICAgICAgICAgICAgOzsgY3JlYXRpbmcg YSBuZXcgc3RyaW5nIG9uIGVhY2ggY2FsbC4KKyAgICAgICAgICAgIChyZW1vdmUtdGV4dC1w cm9wZXJ0aWVzCisgICAgICAgICAgICAgKHBvaW50LW1pbikgKHBvaW50LW1heCkgJyhsaW5l LXByZWZpeCBuaWwgd3JhcC1wcmVmaXggbmlsKSkKKyAgICAgICAgICAgIChjYXIgKGJ1ZmZl ci10ZXh0LXBpeGVsLXNpemUgbmlsIG5pbCB0KSkpCisgICAgICAgIDs7IE1hcmsgYnVmZmVy IGFzIGZyZWUgdG8gdXNlLgorICAgICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnc3RyaW5n LS1waXhlbC13aWR0aC1idWZmZXIpKSkpKQogCiA7OzsjIyNhdXRvbG9hZAogKGRlZnVuIHN0 cmluZy1nbHlwaC1zcGxpdCAoc3RyaW5nKQo= --------------mXmucp7oBVioNV9840LnjaKw--