From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Thierry Volpiatto Newsgroups: gmane.emacs.devel Subject: Re: Better alternative to completing-read-multiple Date: Sat, 20 Apr 2024 06:16:57 +0000 Message-ID: <8734rg5zja.fsf@posteo.net> References: <87o7a59hks.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="14863"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Ilya Chernyshov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Apr 20 08:16:01 2024 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 1ry413-0003gA-4H for ged-emacs-devel@m.gmane-mx.org; Sat, 20 Apr 2024 08:16:01 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ry40T-0004Pg-BJ; Sat, 20 Apr 2024 02:15:25 -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 1ry40Q-0004NV-CZ for emacs-devel@gnu.org; Sat, 20 Apr 2024 02:15:22 -0400 Original-Received: from mout02.posteo.de ([185.67.36.66]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ry40M-0003iX-AK for emacs-devel@gnu.org; Sat, 20 Apr 2024 02:15:20 -0400 Original-Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 97E4F240103 for ; Sat, 20 Apr 2024 08:15:14 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1713593714; bh=N3y0kGm01+EPV6DOHUMRxGpgkOYGJ+Z+6AjQzryvHVY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type: Autocrypt:OpenPGP:From; b=q9Te68rb5J9iSfdXslmI3yKQumz01mJwna8HeXi1wtiZ00bHtNJQa8fYrWtCReJhF /9o7j2JECrVVyd1SmHDGZyMYwyQKyuI3yVUck93UdO4bymUOQV3ihR8eDc80RmcWMb WnipcOZwqLhmOarx4nneRVz1fRYHxdyZN8cxzcG+/xPzjONRz5oxVBT7GhF0k37E89 wB8ap1kmsLpI5YF9J+xWWlkHHyq3viURcdamuoWhq6VN0NzNOF+INZbmebWZFa1SV6 ItWsD9edV39kaaCvtii+BBYTgQfJrXO8Mf6/Yd5Xq6mlzh7gs6yfp2A+q3YlXiwpdy mCJcxhPGxHIrQ== Original-Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4VM1TF3mcGz9rxF; Sat, 20 Apr 2024 08:15:13 +0200 (CEST) In-Reply-To: <87o7a59hks.fsf@gmail.com> (Ilya Chernyshov's message of "Sat, 20 Apr 2024 04:18:59 +0700") Autocrypt: addr=thievol@posteo.net; prefer-encrypt=mutual; keydata=xsDNBF8ylcIBDADG+hy+zR6L4/vbdDDZuSaMmSrU3A5QZJpeBCvxTr7MpzzruZbhLPW1K3R6N2MA edi8Y+C8o27FVRIjpdbaKMGu9je7JV/TbUQYo3SOwCK1vM4LUn4V6ZLzSYkuiEt4eyMoiDdyvN0p kcK6P9x9DCetcEVszXzQg+yzCVrQ2hXWDXWT4M18EC3wtO7RHPouMqGiwBFhBAYErCqFWFxQHkfb tG/4yGyJ58rglb65O3qijjMWvYwcWZun9/7qm8Z4/4mHopmo2zgU+OrptnLSZfkZGz3Y7Uf452xQ GVq0Fv75NPvQru7y+DYVhuVXXyAmGxt+vf4rIiixMBbhKEPjcxEPAa2LTzex2IsTZR+QVG9uDnqC WcgaOEQ58fzXNvNhtwwF/Rgio2XWAJVdmFWS59/k9W58CIUSNKBMZh2XeGdEmtHvDtCxW3z6FJha 36RzOM3fMNNiAGdFZJA84gcdloJR+sHCDTTPT3784fjr+V8An7sI581NGFzkRQqPvEQCZbUAEQEA Ac0SdGhpZXZvbEBwb3N0ZW8ubmV0wsEOBBMBCgA4AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA FiEEI9twfRN7r3nig/xwDsVtFB0W75MFAmL3HCoACgkQDsVtFB0W75OVEAv/f6XxmtIFz08fUb8h Bp/zJP6IC4/rhhh+0GMRIRzLN8DK0jV8JCzYdFHiRJOy2lNIOpmrrCmjRRxferc2G42+ePFIsslx hU46VSz1Z83NwIG3mpdYNV5WUTUdgzxExHTNTFCd7NKv0nlHKQaA OpenPGP: url=https://posteo.de/keys/thievol@posteo.net.asc; preference=encrypt Received-SPF: pass client-ip=185.67.36.66; envelope-from=thievol@posteo.net; helo=mout02.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, 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-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:317864 Archived-At: Ilya Chernyshov writes: > Hello > > In completing-read-multiple, the resulting list of chosen strings is made > by splitting the input string with crm-separator regular expression variable. > > This approach is not suitable for a list of candidates where a candidate > string might contain a character that is currently treated as a > separator. Imagine a situation where you read a list of Org headings > from user. In an Org heading you can have any character including the > default separator ",". Changing the value of crm-separator locally is > not a solution here. > > A much better solution could be a completion command where a chosen > candidate is appended to a list (displayed in the prompt) when a user > presses RET and then returned when a user presses something like > C-RET. Already chosen candidates could be erased via C- You can provide this feature to Helm users: --8<---------------cut here---------------start------------->8--- (defvar helm-comp-read-use-marked) (let ((lst '(a b c d e))) (if (boundp 'helm-comp-read-use-marked) (let ((helm-comp-read-use-marked t)) (completing-read "test: " lst)) (completing-read-multiple "test: " lst))) --8<---------------cut here---------------end--------------->8--- The completing-read will return a list of marked candidates, if Helm is not available fallback to CRM. > This functionality definitely could be helpful at least in org, org-ql packages > (for completion over org headings). > > I am not an Elisp expert, but here's some drafts. If you are interested, > please comment. > > Test the function: > > (ic-completing-read-multiple "Prompt: " '("first" "second" "third")) > > -- Thierry