From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Gregory Heytings Newsgroups: gmane.emacs.devel Subject: Re: Setting `minibuffer-completion-table` buffer-locally Date: Sat, 24 Apr 2021 13:38:13 +0000 Message-ID: <7ee648e84073daf1599b@heytings.org> References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="eKY7JvAkv0" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="31720"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Apr 24 15:38:54 2021 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 1laIUn-00080d-Ja for ged-emacs-devel@m.gmane-mx.org; Sat, 24 Apr 2021 15:38:53 +0200 Original-Received: from localhost ([::1]:38016 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1laIUm-0000RV-NN for ged-emacs-devel@m.gmane-mx.org; Sat, 24 Apr 2021 09:38:52 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:55258) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1laIUF-0008T0-FG for emacs-devel@gnu.org; Sat, 24 Apr 2021 09:38:19 -0400 Original-Received: from heytings.org ([95.142.160.155]:55198) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1laIUD-0004kt-4P for emacs-devel@gnu.org; Sat, 24 Apr 2021 09:38:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20210101; t=1619271494; bh=JDjAQNTKEEO6DVqeCfHrcpHnJxNAU8zhOBpm/HJCeU8=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=LyHrW3Cj3bJuPjPGoDLNiwmC7bvUVx2O45YxYNBMrAZ7g9zzywV05fSxmYQHayLDA TNeUfgPm8i/V7mRrOj7Gg9EIr8kBLhMbNggHXxdsCsN/vZcwfjM5c3k6EIlkr42ep/ TyTK9nfBAs8MlnB6AwCV8x64ce4tQUCTHDMfil3CTMWBfUxoWam8D2Jmt6Xp3IzFw0 Kstqf9rg4LQvFySd60Soiiaj/O+rsf024LEf3TjMGgYX6vihawwJb208wQKMwB+WE0 0YU0aOFc+2m4UQCVwVUCAgVIyhtyWtCYqDB5IJoTIh8LS62j0ccyd/itd+8EqHjOb3 whL5OETV9Ol3Q== In-Reply-To: Content-ID: <7ee648e840f99dddde72@heytings.org> Received-SPF: pass client-ip=95.142.160.155; envelope-from=gregory@heytings.org; helo=heytings.org 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, SPF_HELO_PASS=-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.23 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:268336 Archived-At: --eKY7JvAkv0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-ID: <7ee648e840db381364e4@heytings.org> > > There's a "competing" patch from Gregory which does something similar > but in a slightly different way (less clean but potentially a bit more > backward compatible), and I think in order to decide which is the best > approach we need to have a more concrete information about the risk of > breakage and what we might need to do to minimize it. > In the interest of fairness in the discussion and comparison, and given the length of the discussion in bug#45474, here is the "competing" patch. The five major differences between the two approaches are (m-c-* stands for the minibuffer-completion-* variables, r-f-m for read-from-minibuffer, and m-w-s-h for minibuffer-with-setup-hook): (1) SM: m-c-* variables are passed explicitly as arguments to r-f-m with a m-w-s-h, they are stricly buffer-local GH: m-c-* variables are passed implicitly as arguments to r-f-m, they automatically become buffer-local upon entering the minibuffer (2) SM: it is and it will remain necessary to use a m-w-s-h with setq-locals to have buffer-local m-c-* variables in r-f-m GH: for Emacs 28 it is necessary to let-bind minibuffer-local-completion to t around the call to r-f-m (to preserve backward compatibility), for Emacs 29 and above minibuffer-local-completion t will be assumed (or, with the strong version: the only possible behavior) (3) SM: when m-c-* variables are strictly buffer-local (i.e., when they are passed in a m-w-s-h to r-f-m), they cannot interfere with code outside of the minibuffer GH: because m-c-* variables become buffer-local only upon entering the minibuffer, they can possibly interfere with code that is executed around the call to r-f-m, between the moment they have been let-bound and the moment they become buffer-local (4) SM: the semantics of r-f-m is not changed GH: the semantics of r-f-m is changed, in Emacs 28 the m-c-* variables become buffer-local when minibuffer-local-completion is t, in Emacs 29 they become buffer-local unless minibuffer-local-completion is nil (or, with the strong version: they become buffer-local) (5) SM: the patch fixes the behavior of completing-read-default GH: the patch fixes the behavior of completing-read-default and makes, in the medium term, that new behavior the default one for all uses of r-f-m --eKY7JvAkv0 Content-Type: text/x-diff; name=competing.patch; charset=us-ascii Content-Transfer-Encoding: base64 Content-ID: <7ee648e840946db78a23@heytings.org> Content-Description: Content-Disposition: attachment; filename=competing.patch ZGlmZiAtLWdpdCBhL2xpc3AvbWluaWJ1ZmZlci5lbCBiL2xpc3AvbWluaWJ1 ZmZlci5lbA0KaW5kZXggN2RhM2MzOWU2Yi4uMzc5ZGFkZWY5ZCAxMDA2NDQN Ci0tLSBhL2xpc3AvbWluaWJ1ZmZlci5lbA0KKysrIGIvbGlzcC9taW5pYnVm ZmVyLmVsDQpAQCAtMzg4NCw3ICszODg0LDggQEAgY29tcGxldGluZy1yZWFk LWRlZmF1bHQNCiAgICAgICAgICAgICAgICAgOzsgYHJlYWQtZnJvbS1taW5p YnVmZmVyJyB1c2VzIDEtYmFzZWQgaW5kZXguDQogICAgICAgICAgICAgICAg ICgxKyAoY2RyIGluaXRpYWwtaW5wdXQpKSkpKQ0KIA0KLSAgKGxldCogKCht aW5pYnVmZmVyLWNvbXBsZXRpb24tdGFibGUgY29sbGVjdGlvbikNCisgIChs ZXQqICgobWluaWJ1ZmZlci1sb2NhbC1jb21wbGV0aW9uIHQpDQorICAgICAg ICAgKG1pbmlidWZmZXItY29tcGxldGlvbi10YWJsZSBjb2xsZWN0aW9uKQ0K ICAgICAgICAgIChtaW5pYnVmZmVyLWNvbXBsZXRpb24tcHJlZGljYXRlIHBy ZWRpY2F0ZSkNCiAgICAgICAgICA7OyBGSVhNRTogUmVtb3ZlL3JlbmFtZSB0 aGlzIHZhciwgc2VlIHRoZSBuZXh0IG9uZS4NCiAgICAgICAgICAobWluaWJ1 ZmZlci1jb21wbGV0aW9uLWNvbmZpcm0gKHVubGVzcyAoZXEgcmVxdWlyZS1t YXRjaCB0KQ0KZGlmZiAtLWdpdCBhL3NyYy9taW5pYnVmLmMgYi9zcmMvbWlu aWJ1Zi5jDQppbmRleCBjNDQ4MmQ3ZjFlLi41ODRhZmQ1ZDA0IDEwMDY0NA0K LS0tIGEvc3JjL21pbmlidWYuYw0KKysrIGIvc3JjL21pbmlidWYuYw0KQEAg LTY4LDYgKzY4LDkgQEAgQ29weXJpZ2h0IChDKSAxOTg1LTE5ODYsIDE5OTMt MjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCiAvKiBXaWR0 aCBvZiBjdXJyZW50IG1pbmktYnVmZmVyIHByb21wdC4gIE9ubHkgc2V0IGFm dGVyIGRpc3BsYXlfbGluZQ0KICAgIG9mIHRoZSBsaW5lIHRoYXQgY29udGFp bnMgdGhlIHByb21wdC4gICovDQogDQorc3RhdGljIExpc3BfT2JqZWN0IG1p bmlidWZmZXJfY29tcGxldGlvbl90YWJsZSwgbWluaWJ1ZmZlcl9jb21wbGV0 aW9uX3ByZWRpY2F0ZSwNCisgIG1pbmlidWZmZXJfY29tcGxldGlvbl9jb25m aXJtOw0KKw0KIHN0YXRpYyBwdHJkaWZmX3QgbWluaWJ1Zl9wcm9tcHRfd2lk dGg7DQogDQogc3RhdGljIExpc3BfT2JqZWN0IG50aF9taW5pYnVmZmVyIChF TUFDU19JTlQgZGVwdGgpOw0KQEAgLTg2Miw2ICs4NjUsMTYgQEAgcmVhZF9t aW5pYnVmIChMaXNwX09iamVjdCBtYXAsIExpc3BfT2JqZWN0IGluaXRpYWws IExpc3BfT2JqZWN0IHByb21wdCwNCiAgIGlmIChTVFJJTkdQIChpbnB1dF9t ZXRob2QpICYmICFOSUxQIChGZmJvdW5kcCAoUWFjdGl2YXRlX2lucHV0X21l dGhvZCkpKQ0KICAgICBjYWxsMSAoUWFjdGl2YXRlX2lucHV0X21ldGhvZCwg aW5wdXRfbWV0aG9kKTsNCiANCisgIGlmICghIEVRIChWbWluaWJ1ZmZlcl9s b2NhbF9jb21wbGV0aW9uLCBRbmlsKSkgew0KKyAgICBGbWFrZV9sb2NhbF92 YXJpYWJsZSAoUW1pbmlidWZmZXJfY29tcGxldGlvbl90YWJsZSk7DQorICAg IEZzZXQgKFFtaW5pYnVmZmVyX2NvbXBsZXRpb25fdGFibGUsIG1pbmlidWZm ZXJfY29tcGxldGlvbl90YWJsZSk7DQorICAgIEZtYWtlX2xvY2FsX3Zhcmlh YmxlIChRbWluaWJ1ZmZlcl9jb21wbGV0aW9uX3ByZWRpY2F0ZSk7DQorICAg IEZzZXQgKFFtaW5pYnVmZmVyX2NvbXBsZXRpb25fcHJlZGljYXRlLCBtaW5p YnVmZmVyX2NvbXBsZXRpb25fcHJlZGljYXRlKTsNCisgICAgRm1ha2VfbG9j YWxfdmFyaWFibGUgKFFtaW5pYnVmZmVyX2NvbXBsZXRpb25fY29uZmlybSk7 DQorICAgIEZzZXQgKFFtaW5pYnVmZmVyX2NvbXBsZXRpb25fY29uZmlybSwg bWluaWJ1ZmZlcl9jb21wbGV0aW9uX2NvbmZpcm0pOw0KKyAgICBWbWluaWJ1 ZmZlcl9sb2NhbF9jb21wbGV0aW9uID0gUW5pbDsNCisgIH0NCisNCiAgIHJ1 bl9ob29rIChRbWluaWJ1ZmZlcl9zZXR1cF9ob29rKTsNCiANCiAgIC8qIERv bid0IGFsbG93IHRoZSB1c2VyIHRvIHVuZG8gcGFzdCB0aGlzIHBvaW50LiAg Ki8NCkBAIC0xMjkxLDYgKzEzMDQsNyBAQCBERUZVTiAoInJlYWQtZnJvbS1t aW5pYnVmZmVyIiwgRnJlYWRfZnJvbV9taW5pYnVmZmVyLA0KICAgKExpc3Bf T2JqZWN0IHByb21wdCwgTGlzcF9PYmplY3QgaW5pdGlhbF9jb250ZW50cywg TGlzcF9PYmplY3Qga2V5bWFwLCBMaXNwX09iamVjdCByZWFkLCBMaXNwX09i amVjdCBoaXN0LCBMaXNwX09iamVjdCBkZWZhdWx0X3ZhbHVlLCBMaXNwX09i amVjdCBpbmhlcml0X2lucHV0X21ldGhvZCkNCiB7DQogICBMaXNwX09iamVj dCBoaXN0dmFyLCBoaXN0cG9zLCB2YWw7DQorICBwdHJkaWZmX3QgY291bnQ7 DQogDQogICBiYXJmX2lmX2ludGVyYWN0aW9uX2luaGliaXRlZCAoKTsNCiAN CkBAIC0xMzE1LDExICsxMzI5LDI1IEBAIERFRlVOICgicmVhZC1mcm9tLW1p bmlidWZmZXIiLCBGcmVhZF9mcm9tX21pbmlidWZmZXIsDQogICBpZiAoTklM UCAoaGlzdHBvcykpDQogICAgIFhTRVRGQVNUSU5UIChoaXN0cG9zLCAwKTsN CiANCisgIGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsNCisNCisgIGlmICgh IEVRIChWbWluaWJ1ZmZlcl9sb2NhbF9jb21wbGV0aW9uLCBRbmlsKSkgew0K KyAgICBtaW5pYnVmZmVyX2NvbXBsZXRpb25fdGFibGUgPSBWbWluaWJ1ZmZl cl9jb21wbGV0aW9uX3RhYmxlOw0KKyAgICBtaW5pYnVmZmVyX2NvbXBsZXRp b25fcHJlZGljYXRlID0gVm1pbmlidWZmZXJfY29tcGxldGlvbl9wcmVkaWNh dGU7DQorICAgIG1pbmlidWZmZXJfY29tcGxldGlvbl9jb25maXJtID0gVm1p bmlidWZmZXJfY29tcGxldGlvbl9jb25maXJtOw0KKyAgICBzcGVjYmluZCAo UW1pbmlidWZmZXJfY29tcGxldGlvbl90YWJsZSwgUW5pbCk7DQorICAgIHNw ZWNiaW5kIChRbWluaWJ1ZmZlcl9jb21wbGV0aW9uX3ByZWRpY2F0ZSwgUW5p bCk7DQorICAgIHNwZWNiaW5kIChRbWluaWJ1ZmZlcl9jb21wbGV0aW9uX2Nv bmZpcm0sIFFuaWwpOw0KKyAgfQ0KKw0KICAgdmFsID0gcmVhZF9taW5pYnVm IChrZXltYXAsIGluaXRpYWxfY29udGVudHMsIHByb21wdCwNCiAJCSAgICAg ICFOSUxQIChyZWFkKSwNCiAJCSAgICAgIGhpc3R2YXIsIGhpc3Rwb3MsIGRl ZmF1bHRfdmFsdWUsDQogCQkgICAgICBtaW5pYnVmZmVyX2FsbG93X3RleHRf cHJvcGVydGllcywNCiAJCSAgICAgICFOSUxQIChpbmhlcml0X2lucHV0X21l dGhvZCkpOw0KKw0KKyAgdW5iaW5kX3RvIChjb3VudCwgUW5pbCk7DQorDQog ICByZXR1cm4gdmFsOw0KIH0NCiANCkBAIC0xMzQ1LDExICsxMzczLDkgQEAg REVGVU4gKCJyZWFkLXN0cmluZyIsIEZyZWFkX3N0cmluZywgU3JlYWRfc3Ry aW5nLCAxLCA1LCAwLA0KICAgTGlzcF9PYmplY3QgdmFsOw0KICAgcHRyZGlm Zl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsNCiANCi0gIC8qIEp1c3Qg aW4gY2FzZSB3ZSdyZSBpbiBhIHJlY3Vyc2l2ZSBtaW5pYnVmZmVyLCBtYWtl IGl0IGNsZWFyIHRoYXQgdGhlDQotICAgICBwcmV2aW91cyBtaW5pYnVmZmVy J3MgY29tcGxldGlvbiB0YWJsZSBkb2VzIG5vdCBhcHBseSB0byB0aGUgbmV3 DQotICAgICBtaW5pYnVmZmVyLg0KLSAgICAgRklYTUU6IGBtaW5pYnVmZmVy LWNvbXBsZXRpb24tdGFibGUnIHNob3VsZCBiZSBidWZmZXItbG9jYWwgaW5z dGVhZC4gICovDQogICBzcGVjYmluZCAoUW1pbmlidWZmZXJfY29tcGxldGlv bl90YWJsZSwgUW5pbCk7DQorICBzcGVjYmluZCAoUW1pbmlidWZmZXJfY29t cGxldGlvbl9wcmVkaWNhdGUsIFFuaWwpOw0KKyAgc3BlY2JpbmQgKFFtaW5p YnVmZmVyX2NvbXBsZXRpb25fY29uZmlybSwgUW5pbCk7DQogDQogICB2YWwg PSBGcmVhZF9mcm9tX21pbmlidWZmZXIgKHByb21wdCwgaW5pdGlhbF9pbnB1 dCwgUW5pbCwNCiAJCQkgICAgICAgUW5pbCwgaGlzdG9yeSwgZGVmYXVsdF92 YWx1ZSwNCkBAIC0yMjgxLDYgKzIzMDcsOSBAQCBzeW1zX29mX21pbmlidWYg KHZvaWQpDQogICBGc2V0IChRbWluaWJ1ZmZlcl9kZWZhdWx0LCBRbmlsKTsN CiANCiAgIERFRlNZTSAoUW1pbmlidWZmZXJfY29tcGxldGlvbl90YWJsZSwg Im1pbmlidWZmZXItY29tcGxldGlvbi10YWJsZSIpOw0KKyAgREVGU1lNIChR bWluaWJ1ZmZlcl9jb21wbGV0aW9uX3ByZWRpY2F0ZSwgIm1pbmlidWZmZXIt Y29tcGxldGlvbi1wcmVkaWNhdGUiKTsNCisgIERFRlNZTSAoUW1pbmlidWZm ZXJfY29tcGxldGlvbl9jb25maXJtLCAibWluaWJ1ZmZlci1jb21wbGV0aW9u LWNvbmZpcm0iKTsNCisgIERFRlNZTSAoUW1pbmlidWZmZXJfbG9jYWxfY29t cGxldGlvbiwgIm1pbmlidWZmZXItbG9jYWwtY29tcGxldGlvbiIpOw0KIA0K ICAgc3RhdGljcHJvICgmbGFzdF9taW5pYnVmX3N0cmluZyk7DQogDQpAQCAt MjQxNCw2ICsyNDQzLDIzIEBAIHN5bXNfb2ZfbWluaWJ1ZiAodm9pZCkNCiAg Y29tcGxldGlvbiBjb21tYW5kcyBsaXN0ZWQgaW4gYG1pbmlidWZmZXItY29u ZmlybS1leGl0LWNvbW1hbmRzJy4gICovKTsNCiAgIFZtaW5pYnVmZmVyX2Nv bXBsZXRpb25fY29uZmlybSA9IFFuaWw7DQogDQorICBERUZWQVJfTElTUCAo Im1pbmlidWZmZXItbG9jYWwtY29tcGxldGlvbiIsIFZtaW5pYnVmZmVyX2xv Y2FsX2NvbXBsZXRpb24sDQorCSAgICAgICBkb2M6IC8qIFdoZXRoZXIgbWlu aWJ1ZmZlciBjb21wbGV0aW9uIGVsZW1lbnRzIHNob3VsZCBiZWNvbWUgYnVm ZmVyLWxvY2FsLg0KK1RoZSBkZWZhdWx0IGlzIG5pbCBmb3IgRW1hY3MgMjgu DQorDQorW1NUUk9ORyBWRVJTSU9OOl0gU2V0dGluZyB0aGlzIHZhcmlhYmxl IGluIEVtYWNzIDI5IHdpbGwgaGF2ZSBubyBlZmZlY3Q7DQordGhlIHZhbHVl IHQgd2lsbCBiZSBhc3N1bWVkLg0KKw0KK1tXRUFLIFZFUlNJT046XSBUaGUg ZGVmYXVsdCB3aWxsIGJlIHQgZm9yIEVtYWNzIDI5Lg0KKw0KK1doZW4gdCwg YG1pbmlidWZmZXItY29tcGxldGlvbi10YWJsZScsIGBtaW5pYnVmZmVyLWNv bXBsZXRpb24tcHJlZGljYXRlJw0KK2FuZCBgbWluaWJ1ZmZlci1jb21wbGV0 aW9uLWNvbmZpcm0nIGJlY29tZSBidWZmZXItbG9jYWwgdXBvbiBlbnRlcmlu ZyB0aGUNCittaW5pYnVmZmVyLCBhbmQgYXJlIG5pbCBpbiByZWN1cnNpdmUg aW52b2NhdGlvbnMgb2YgdGhlIG1pbmlidWZmZXIsIHVubGVzcw0KK3RoZXkg aGF2ZSBiZWVuIGxldC1ib3VuZCB0byBhIHZhbHVlLg0KK1doZW4gbmlsLCB0 aGVpciB2YWx1ZXMgaXMgc2hhcmVkIGJldHdlZW4gdGhlIHJlY3Vyc2l2ZSBp bnZvY2F0aW9ucyBvZiB0aGUNCittaW5pYnVmZmVyLCB1bmxlc3MgdGhleSBo YXZlIGJlZW4gbGV0LWJvdW5kIHRvIGFub3RoZXIgdmFsdWUuICAqLyk7DQor ICBWbWluaWJ1ZmZlcl9sb2NhbF9jb21wbGV0aW9uID0gUW5pbDsNCisNCiAg IERFRlZBUl9MSVNQICgibWluaWJ1ZmZlci1jb21wbGV0aW5nLWZpbGUtbmFt ZSIsDQogCSAgICAgICBWbWluaWJ1ZmZlcl9jb21wbGV0aW5nX2ZpbGVfbmFt ZSwNCiAJICAgICAgIGRvYzogLyogTm9uLW5pbCBtZWFucyBjb21wbGV0aW5n IGZpbGUgbmFtZXMuICAqLyk7DQo= --eKY7JvAkv0--