From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Tassilo Horn Newsgroups: gmane.emacs.help Subject: Re: Completion: display of candidates Date: Mon, 18 Feb 2019 20:24:30 +0100 Message-ID: <877edwsxw1.fsf@gnu.org> References: <877edx8rbh.fsf@gnu.org> <87mumtno2f.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="120365"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: help-gnu-emacs@gnu.org To: Stefan Monnier Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Feb 18 20:24:51 2019 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gvoX2-000V8E-8m for geh-help-gnu-emacs@m.gmane.org; Mon, 18 Feb 2019 20:24:48 +0100 Original-Received: from localhost ([127.0.0.1]:35630 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gvoX1-0000gv-9U for geh-help-gnu-emacs@m.gmane.org; Mon, 18 Feb 2019 14:24:47 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:57677) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gvoWp-0000gn-S2 for help-gnu-emacs@gnu.org; Mon, 18 Feb 2019 14:24:36 -0500 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:50042) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gvoWo-00042R-1H; Mon, 18 Feb 2019 14:24:34 -0500 Original-Received: from auth2-smtp.messagingengine.com ([66.111.4.228]:57865) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.82) (envelope-from ) id 1gvoWn-0004k8-8e; Mon, 18 Feb 2019 14:24:33 -0500 Original-Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailauth.nyi.internal (Postfix) with ESMTP id AEFBF2222B; Mon, 18 Feb 2019 14:24:32 -0500 (EST) Original-Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Mon, 18 Feb 2019 14:24:32 -0500 X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedutddrtddugdelgeculddtuddrgedtledrtddtmd cutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfhuthen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufhfffgjkfgfgggtsehttdertddtredtnecuhfhrohhmpefvrghsshhi lhhoucfjohhrnhcuoehtshguhhesghhnuhdrohhrgheqnecukfhppeelfedrvdefiedrud dvledrhedvnecurfgrrhgrmhepmhgrihhlfhhrohhmpehthhhorhhnodhmvghsmhhtphgr uhhthhhpvghrshhonhgrlhhithihqdekieejfeekjeekgedqieefhedvleekqdhtshguhh eppehgnhhurdhorhhgsehfrghsthhmrghilhdrfhhmnecuvehluhhsthgvrhfuihiivgep td X-ME-Proxy: Original-Received: from thinkpad-t440p (p5dec8134.dip0.t-ipconnect.de [93.236.129.52]) by mail.messagingengine.com (Postfix) with ESMTPA id 6588110311; Mon, 18 Feb 2019 14:24:31 -0500 (EST) In-Reply-To: (Stefan Monnier's message of "Mon, 18 Feb 2019 13:05:14 -0500") X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.org gmane.emacs.help:119445 Archived-At: Stefan Monnier writes: >> Yes, I could. I just thought that there's probably some kind of >> metadata I could attach for customizing the display. > > It can't be "display only" since the user expects to type what is > displayed, so it also affects what the user types. Right, and here comes the next problem: concretely I get my completions from `locate --basename `. So the user (me) might enter a wildcard pattern like "foo*bar.*". But the completions/matches obviously have no * in it, so no completion matches the candidates. How to handle that? Use the PREDICATE argument in completing-read so that the input ".em*s" matches the found candidate ".emacs (/home/horn)" by transforming the wildcard to an emacs regexp and using string-match-p? > BTW, you might be interested in the GNU ELPA package `uniquify-files` > which tries to do almost exactly what you suggest (it requires a few > ugly hacks currently, but we hope to be able to improve the > minibuffer.el infrastructure so those can be dispensed with). I'll have a look at it. Thanks for the pointer. >> So I guess the best thing to do is to format the entries as you >> suggest and put a text property on the text holding the absolute path >> so that I don't have to reconstruct it myself which could be >> error-prone if the directory or basename contain parens themselves. > > You can't really rely on those text-properties, because the user may > have typed that text by hand. I use the REQUIRE-MATCH argument of completing read, and even if I didn't, if there's no property the user (me) must have entered a file name then. Bye, Tassilo