From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Kangas Newsgroups: gmane.emacs.devel Subject: Make format-spec accept a function as the substitution Date: Tue, 27 Sep 2022 14:02:32 -0400 Message-ID: References: <166336105908.23797.12319380359602540227@vcs2.savannah.gnu.org> <20220916204419.B124FC00872@vcs2.savannah.gnu.org> <87edwavjyc.fsf@yahoo.com> <87wna1tr7z.fsf@yahoo.com> <87y1u51ddf.fsf@posteo.net> <87edvwrfg7.fsf@gmail.com> <83wn9oixdr.fsf@gnu.org> <83tu4sivtq.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000d4059b05e9ac72fd" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="8466"; mail-complaints-to="usenet@ciao.gmane.io" Cc: visuweshm@gmail.com, thievol@posteo.net, luangruo@yahoo.com, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Sep 27 20:05:30 2022 Return-path: Envelope-to: ged-emacs-devel@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 1odExV-000227-Of for ged-emacs-devel@m.gmane-mx.org; Tue, 27 Sep 2022 20:05:29 +0200 Original-Received: from localhost ([::1]:60948 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odExU-0008Il-Se for ged-emacs-devel@m.gmane-mx.org; Tue, 27 Sep 2022 14:05:28 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:49464) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1odEum-0005iB-6j for emacs-devel@gnu.org; Tue, 27 Sep 2022 14:02:40 -0400 Original-Received: from mail-oi1-x235.google.com ([2607:f8b0:4864:20::235]:46828) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1odEui-00072B-L9; Tue, 27 Sep 2022 14:02:38 -0400 Original-Received: by mail-oi1-x235.google.com with SMTP id g130so12697338oia.13; Tue, 27 Sep 2022 11:02:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date; bh=QakqNdd8feJMVT8nCqBfpHCRreUuwCOK/jx/41jWG5I=; b=QTjgSw3gJ3XzTsY2l+Zlkra0kgFQg2rI/YFEdGywmF255IfI0Ot5lO4+0OIAkfY2de 9IC5l9bcarRLiGIxghIB63yxX/EG05SjRr+NWh6nxsm7aGHwaPqGozSzPjXo7/DBGiRR LvSLQuIeCx1+21xzeCXn1n5jHB+uHbS6nx3yBFaGqrC7OqyBLDPgEvMYEDh4h3JmwhkR eQVIr5APUBClr4FXef9AhMOtdXrthAqaTbE+7oNb7pN06g/S315gnzjsZPt3y1uZGold RYQA6kQgV2imD7ucLgBt21MIb9LZ+qIjglI0GBUS4EKIAyjXTFLX1UWKnhvv4icpsA/V ICUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date; bh=QakqNdd8feJMVT8nCqBfpHCRreUuwCOK/jx/41jWG5I=; b=i6M63aoT9uthH1OdB0RjCzHNo5od+AMBiJ0sI2SS+MIJPYtXujJVO+/oy9Vso8FCA7 jFsfNA6mLmvS2brxYsR3h6s/Wf1S6NxlFJ2yqCXYa3uhPYJBT2Eh8SGJueueo9hQOiI8 y77eB0ny91rc1kiVvU0fOk0xjOaSFgVT80pWSJIGlP+fmFP+pYg/QHOyRHbohEy9yytN OH9/T+xB0aZk24lamE4zlwJKgpZRFHe1AkcLj1LmHIc0Lw+9nvOA+Zjb2PGlG9Ang8RD O5BYATCDbxwLAKKV1jnAhGDI0IKPuqCYYkGiwFWhLLQhM0geKVUxj9lmmuMqOIWTiYB3 fBjw== X-Gm-Message-State: ACrzQf2HiDtHFtdIvCiyMcJsx3diD+x73kR0I6s7SJxpT10SeTzZV9CG rRQwSr6D7DwIYJ5f3sTV8L/6CaPNIJwm1z0DKknLvVMz X-Google-Smtp-Source: AMsMyM5hPr1/iXrrqLg/oVbEg9ISgm4m0uVOjv2crT7xllI4jwI/A8dowbGQtB2EE35k1W0otg/ZKi7k+Ft/ZKfj0L4= X-Received: by 2002:a05:6808:1a09:b0:350:1e6a:e469 with SMTP id bk9-20020a0568081a0900b003501e6ae469mr2334718oib.92.1664301753681; Tue, 27 Sep 2022 11:02:33 -0700 (PDT) Original-Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Tue, 27 Sep 2022 14:02:32 -0400 In-Reply-To: <83tu4sivtq.fsf@gnu.org> X-Hashcash: 1:20:220927:emacs-devel@gnu.org::HviGoVonxYpp4ei5:5IQi Received-SPF: pass client-ip=2607:f8b0:4864:20::235; envelope-from=stefankangas@gmail.com; helo=mail-oi1-x235.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 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:296364 Archived-At: --000000000000d4059b05e9ac72fd Content-Type: text/plain; charset="UTF-8" Eli Zaretskii writes: > And then I'd suggest something like > > If the substitution for a specification character is a function, the > function will be called only if FORMAT uses that character. Thanks. Please find attached a complete patch with documentation. --000000000000d4059b05e9ac72fd Content-Type: text/x-diff; charset="US-ASCII"; name="0001-Make-format-spec-support-functions.patch" Content-Disposition: attachment; filename="0001-Make-format-spec-support-functions.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: 2492ee779d449b13_0.1 RnJvbSBlYTFiZGNjOTcxMGJiNzMwZmNmNzY1YzU1ODc1YTZmMTAyMDg5ZjM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gS2FuZ2FzIDxzdGVmYW5rYW5nYXNAZ21haWwuY29t PgpEYXRlOiBUdWUsIDI3IFNlcCAyMDIyIDE4OjE2OjUxICswMjAwClN1YmplY3Q6IFtQQVRDSF0g TWFrZSBmb3JtYXQtc3BlYyBzdXBwb3J0IGZ1bmN0aW9ucwoKKiBsaXNwL2Zvcm1hdC1zcGVjLmVs IChmb3JtYXQtc3BlYyk6IEFsbG93IHVzaW5nIGEgZm9ybWF0IGFzIHRoZQpzdWJzdGl0dXRpb24g Zm9yIGEgY2hhcmFjdGVyLgoqIGRvYy9saXNwcmVmL3N0cmluZ3MudGV4aSAoQ3VzdG9tIEZvcm1h dCBTdHJpbmdzKTogRG9jdW1lbnQgdGhlCmFib3ZlIGNoYW5nZS4KKiB0ZXN0L2xpc3AvZm9ybWF0 LXNwZWMtdGVzdHMuZWwgKGZvcm1hdC1zcGVjL2Z1bmN0aW9uKTogTmV3IHRlc3QuClJlZi4gaHR0 cHM6Ly9saXN0cy5nbnUub3JnL3IvZW1hY3MtZGV2ZWwvMjAyMi0wOS9tc2cwMTg3NS5odG1sCi0t LQogZG9jL2xpc3ByZWYvc3RyaW5ncy50ZXhpICAgICAgIHwgIDUgKysrKysKIGV0Yy9ORVdTICAg ICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysrKwogbGlzcC9mb3JtYXQtc3BlYy5lbCAgICAg ICAgICAgIHwgMTYgKysrKysrKysrKysrKystLQogdGVzdC9saXNwL2Zvcm1hdC1zcGVjLXRlc3Rz LmVsIHwgMTEgKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9zdHJpbmdzLnRleGkgYi9k b2MvbGlzcHJlZi9zdHJpbmdzLnRleGkKaW5kZXggMzc0MzgxZTU5NS4uYWYzNjhmNWQwMSAxMDA2 NDQKLS0tIGEvZG9jL2xpc3ByZWYvc3RyaW5ncy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL3N0cmlu Z3MudGV4aQpAQCAtMTI5Myw2ICsxMjkzLDExIEBAIEN1c3RvbSBGb3JtYXQgU3RyaW5ncwogdGhl IG9yZGVyIG9mIGFzc29jaWF0aW9ucyBpbiBAdmFye3NwZWMtYWxpc3R9LgogQGVuZCBpdGVtaXpl CiAKK1JFUExBQ0VNRU5UIGNhbiBhbHNvIGJlIGEgZnVuY3Rpb24gdGFraW5nIG5vIGFyZ3VtZW50 cy4gIEl0IHdpbGwgb25seQorYmUgY2FsbGVkIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgTEVUVEVS IGlzIHVzZWQgaW4gdGhlIFRFTVBMQVRFLiAgVGhpcworaXMgdXNlZnVsLCBmb3IgZXhhbXBsZSwg dG8gYXZvaWQgcHJvbXB0aW5nIGZvciBpbnB1dCB1bmxlc3MgaXQgaXMKK25lZWRlZC4KKwogVGhl IG9wdGlvbmFsIGFyZ3VtZW50IEB2YXJ7aWdub3JlLW1pc3Npbmd9IGluZGljYXRlcyBob3cgdG8g aGFuZGxlCiBzcGVjaWZpY2F0aW9uIGNoYXJhY3RlcnMgaW4gQHZhcnt0ZW1wbGF0ZX0gdGhhdCBh cmUgbm90IGZvdW5kIGluCiBAdmFye3NwZWMtYWxpc3R9LiAgSWYgaXQgaXMgQGNvZGV7bmlsfSBv ciBvbWl0dGVkLCB0aGUgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MK aW5kZXggOTkyNDM0ODFhMC4uOTc4Mzg0NDJkYiAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIv ZXRjL05FV1MKQEAgLTM5MTAsNiArMzkxMCwxMiBAQCB0aGUgc2FtZSBidXQgd29ya3MgYnkgbW9k aWZ5aW5nIExJU1QgZGVzdHJ1Y3RpdmVseS4KIC0tLQogKiogJ3N0cmluZy1zcGxpdCcgaXMgbm93 IGFuIGFsaWFzIGZvciAnc3BsaXQtc3RyaW5nJy4KIAorKysrCisqKiAnZm9ybWF0LXNwZWMnIG5v dyBhY2NlcHRzIGZ1bmN0aW9ucyBpbiB0aGUgcmVwbGFjZW1lbnQuCitUaGUgZnVuY3Rpb24gaXMg Y2FsbGVkIG9ubHkgd2hlbiB1c2VkIGluIHRoZSBmb3JtYXQgc3RyaW5nLiAgVGhpcyBpcwordXNl ZnVsIHRvIGF2b2lkIHNpZGUtZWZmZWN0cyBzdWNoIGFzIHByb21wdGluZywgd2hlbiB0aGUgdmFs dWUgaXMgbm90CithY3R1YWxseSBiZWluZyB1c2VkIGZvciBhbnl0aGluZy4KKwogKysrCiAqKiBU aGUgdmFyaWFibGUgJ21heC1zcGVjcGRsLXNpemUnIGhhcyBiZWVuIG1hZGUgb2Jzb2xldGUuCiBO b3cgJ21heC1saXNwLWV2YWwtZGVwdGgnIGFsb25lIGlzIHVzZWQgZm9yIGxpbWl0aW5nIExpc3Ag cmVjdXJzaW9uCmRpZmYgLS1naXQgYS9saXNwL2Zvcm1hdC1zcGVjLmVsIGIvbGlzcC9mb3JtYXQt c3BlYy5lbAppbmRleCA0NWMxOWFlYmM4Li4xYzgxN2VhN2ZhIDEwMDY0NAotLS0gYS9saXNwL2Zv cm1hdC1zcGVjLmVsCisrKyBiL2xpc3AvZm9ybWF0LXNwZWMuZWwKQEAgLTU5LDYgKzU5LDE3IEBA IGZvcm1hdC1zcGVjCiBsZWFkaW5nIHplcm9zIG9yIHRydW5jYXRpbmcgbGVhZGluZyBjaGFyYWN0 ZXJzIHVudGlsIGl0J3MgdGVuCiBjaGFyYWN0ZXJzIHdpZGVcIi4KIAorSWYgdGhlIHN1YnN0aXR1 dGlvbiBmb3IgYSBzcGVjaWZpY2F0aW9uIGNoYXJhY3RlciBpcyBhIGZ1bmN0aW9uLAordGhlIGZ1 bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9ubHkgaWYgRk9STUFUIHVzZXMgdGhhdCBjaGFyYWN0ZXIu CitGb3IgZXhhbXBsZToKKworICAoZm9ybWF0LXNwZWMgXCIlblwiCisgICAgICAgICAgICAgICBc XD1gKCg/biAuICwobGFtYmRhICgpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkLW51 bWJlciBcIk51bWJlcjogXCIpKSkpKQorCitOb3RlIHRoYXQgaXQgaXMgYmVzdCB0byBtYWtlIHN1 cmUgdGhlIGZ1bmN0aW9uIGlzIG5vdCBxdW90ZWQsCitsaWtlIGFib3ZlLCBzbyB0aGF0IGl0IGlz IGNvbXBpbGVkIGJ5IHRoZSBieXRlLWNvbXBpbGVyLgorCiBBbnkgdGV4dCBwcm9wZXJ0aWVzIG9m IEZPUk1BVCBhcmUgY29waWVkIHRvIHRoZSByZXN1bHQsIHdpdGggYW55CiB0ZXh0IHByb3BlcnRp ZXMgb2YgYSAlLXNwZWMgaXRzZWxmIGNvcGllZCB0byBpdHMgc3Vic3RpdHV0aW9uLgogCkBAIC05 NCwxNCArMTA1LDE1IEBAIGZvcm1hdC1zcGVjCiAgICAgICAgICAgICAgICAgICh3aWR0aCAobWF0 Y2gtc3RyaW5nIDIpKQogICAgICAgICAgICAgICAgICAodHJ1bmMgKG1hdGNoLXN0cmluZyAzKSkK ICAgICAgICAgICAgICAgICAgKGNoYXIgKHN0cmluZy10by1jaGFyIChtYXRjaC1zdHJpbmcgNCkp KQotICAgICAgICAgICAgICAgICAodGV4dCAoYXNzcSBjaGFyIHNwZWNpZmljYXRpb24pKSkKKyAg ICAgICAgICAgICAgICAgKHRleHQgKGxldCAoKHJlcyAoY2RyIChhc3NxIGNoYXIgc3BlY2lmaWNh dGlvbikpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGZ1bmN0aW9ucCByZXMpIChm dW5jYWxsIHJlcykgcmVzKSkpKQogICAgICAgICAgICAgKHdoZW4gKGFuZCBzcGxpdAogICAgICAg ICAgICAgICAgICAgICAgICAobm90ICg9ICgxLSBiZWcpIHNwbGl0LXN0YXJ0KSkpCiAgICAgICAg ICAgICAgIChwdXNoIChidWZmZXItc3Vic3RyaW5nIHNwbGl0LXN0YXJ0ICgxLSBiZWcpKSBzcGxp dC1yZXN1bHQpKQogICAgICAgICAgICAgKGNvbmQgKHRleHQKICAgICAgICAgICAgICAgICAgICA7 OyBIYW5kbGUgZmxhZ3MuCiAgICAgICAgICAgICAgICAgICAgKHNldHEgdGV4dCAoZm9ybWF0LXNw ZWMtLWRvLWZsYWdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMi IChjZHIgdGV4dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMi IHRleHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC1zcGVjLS1wYXJz ZS1mbGFncyBmbGFncykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIHdpZHRo IChzdHJpbmctdG8tbnVtYmVyIHdpZHRoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYW5kIHRydW5jIChjYXIgKHJlYWQtZnJvbS1zdHJpbmcgdHJ1bmMgMSkpKSkpCmRpZmYgLS1n aXQgYS90ZXN0L2xpc3AvZm9ybWF0LXNwZWMtdGVzdHMuZWwgYi90ZXN0L2xpc3AvZm9ybWF0LXNw ZWMtdGVzdHMuZWwKaW5kZXggNGEzY2M3NGMzMy4uYmQ0OTNhZTFkNyAxMDA2NDQKLS0tIGEvdGVz dC9saXNwL2Zvcm1hdC1zcGVjLXRlc3RzLmVsCisrKyBiL3Rlc3QvbGlzcC9mb3JtYXQtc3BlYy10 ZXN0cy5lbApAQCAtMTQ4LDYgKzE0OCwxNyBAQCBmb3JtYXQtc3BlYwogICAgICAgICAgICAgIChm b3JtYXQtc3BlYyBmbXQgJygoP2IgLiAiYXNkIikgKD9hIC4gImZnaCIpKSkKICAgICAgICAgICAg ICAjKCJmZ2glYXNkYXNkIiAwIDMgKGEgYikgMyA0IChjIGQpIDcgMTAgKGUgZikpKSkpKQogCiso ZXJ0LWRlZnRlc3QgZm9ybWF0LXNwZWMvZnVuY3Rpb24gKCkKKyAgKGxldCogKGNhbGxlZAorICAg ICAgICAgKHNwZWMgYCgoP2EgLiAiZm9vIikKKyAgICAgICAgICAgICAgICAgKD9mIC4gLChsYW1i ZGEgKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgY2FsbGVkIHQpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICJiYXIiKSkpKSkKKyAgICAoc2hvdWxkIChlcXVhbCAoZm9ybWF0 LXNwZWMgIiVhIiBzcGVjKSAiZm9vIikpCisgICAgKHNob3VsZC1ub3QgY2FsbGVkKQorICAgIChz aG91bGQgKGVxdWFsIChmb3JtYXQtc3BlYyAiJWYiIHNwZWMpICJiYXIiKSkKKyAgICAoc2hvdWxk IGNhbGxlZCkpKQorCiAoZXJ0LWRlZnRlc3QgZm9ybWF0LXNwZWMtdW5rbm93biAoKQogICAoc2hv dWxkLWVycm9yIChmb3JtYXQtc3BlYyAiZm9vICViICV6IHpvdCIgJygoP2IgLiAiYmFyIikpKSkK ICAgKHNob3VsZC1lcnJvciAoZm9ybWF0LXNwZWMgImZvbyAlYiAlJSV6IHpvdCIgJygoP2IgLiAi YmFyIikpKSkKLS0gCjIuMzAuMgoK --000000000000d4059b05e9ac72fd--