From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Drew Adams Newsgroups: gmane.emacs.devel Subject: RE: [External] : Better alternative to completing-read-multiple Date: Sat, 20 Apr 2024 15:22:41 +0000 Message-ID: References: <87o7a59hks.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="39444"; mail-complaints-to="usenet@ciao.gmane.io" To: Ilya Chernyshov , "emacs-devel@gnu.org" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Apr 20 17:23:32 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 1ryCYt-000A4b-M3 for ged-emacs-devel@m.gmane-mx.org; Sat, 20 Apr 2024 17:23:31 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ryCYJ-0004xM-0N; Sat, 20 Apr 2024 11:22:55 -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 1ryCYH-0004x9-5G for emacs-devel@gnu.org; Sat, 20 Apr 2024 11:22:53 -0400 Original-Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ryCYF-0000T3-39 for emacs-devel@gnu.org; Sat, 20 Apr 2024 11:22:52 -0400 Original-Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 43K3XCf0021341; Sat, 20 Apr 2024 15:22:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2023-11-20; bh=lQz9VzRIWx0JyPgsfnhMTO7LdOqU6X+CbyYdKFKZzmk=; b=BSYVx3yCEWNQL4/y5OUfaPMuXZBoerY/o74w/Kfgxt+8vzNGffmo/1hGESQFdoYxvREt l+KOwLpT3yLZoWXo+aP07jX28/FK1AK4tm6KJ7n9o6D8cYe+Myjk2eJRSYc1vBbp8GU/ aBtgvHRvV7Fpq7ErbVnybeZQaiprjkKFYpmt1F68srJfUBfm32oxQp/uPN3kVIy++KAn LkP5oDezyQXdOS8WCzUq2nZFod7+pIHAqXwZXa0thCrp/8yNYXdvh/VuHuiILfgzNXRs KLfWsVF3juuQMmXt5oNaV5F8sK+UP90wCr42f8q5frbego9VGXFvHCR4BbO6kIyqO/ze zw== Original-Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3xm4a28f9m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 20 Apr 2024 15:22:44 +0000 Original-Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 43KE5U53040589; Sat, 20 Apr 2024 15:22:44 GMT Original-Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2040.outbound.protection.outlook.com [104.47.66.40]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3xm453xfs7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 20 Apr 2024 15:22:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OYydjeBELKltWFBcHJhKjnD5FalkFNUVECnCmnGKjltb4aQr5Z81bT5Zs82suqcHaADRLENEpnQFWRy6gFI6oAHGcrpqGG6Ktu8g62UWFsd0JeA/I5fFi4/IxOKpzSjmrWhEQ87m2zyuDkQx9diJeuSnl/eC8R/pGSMtqFpuC9ZLopYr8CbnMy25jDAJ5xtNOmV+U4u+3OYr7x8IV+c3CcGVv4XvaEl7FuwRNaJ/FzM/k4S2CB4FjjZWiTe4fthXBsuAvftC4vuUvOHf3xFmjqQJp31xZOJOSsEQ73Ho9Fk4fPNRDR0ktKGneaYNgwR2V9/5CWy5ELPMkZh7rl/Mpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lQz9VzRIWx0JyPgsfnhMTO7LdOqU6X+CbyYdKFKZzmk=; b=d24wzj44QPAp/pRpngCuy2zcvOgLS/dVItCEkBT+sKwY2SYRj+nPYoe4tyKgJBxeaxI/ObJhV+TDOKAJtbeY2BcqBNJBi6oPWwwMSYutBdenFGcnX5TOLmwJXYL9xjD0P+Yncd+qKDXeJutmSOlK/X9Proud2Um87fpXWbRxa1BSJZFIW6HY4FSfp7xKjAOYkIgz+/LUsGsIv9Ikk6Bhrk9ielvCK+LOX/WaVhVpBQe3ZoZPUonwjRm4YP2eG6d8Nm9hHG8gjN5cNF54w7MN6NDmuNUsxYLSnohSVBBmnYppms74zvS0+QmxiPacLgpJ4zoSiT1WfjhaF4l6QeBfMw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lQz9VzRIWx0JyPgsfnhMTO7LdOqU6X+CbyYdKFKZzmk=; b=dEpWdzV9LW/k//Ai1+MaQgNOLeQlNebznp7bhw7D+EKvJrG6wNeT5G14QIfaXhYvNcu7bvzWEil56vohSQFhdAe4XBGt20skL4KuM0sYmR74PjdC5eoI6BLIGOzGlEuVLo3/RsIPgZJtbZ7WfFVNT6uR/NN1ONXg2lNd+G/N5yg= Original-Received: from SJ0PR10MB5488.namprd10.prod.outlook.com (2603:10b6:a03:37e::19) by CY5PR10MB6010.namprd10.prod.outlook.com (2603:10b6:930:29::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Sat, 20 Apr 2024 15:22:42 +0000 Original-Received: from SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::d9bc:c5bb:7fc4:cf9f]) by SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::d9bc:c5bb:7fc4:cf9f%6]) with mapi id 15.20.7472.042; Sat, 20 Apr 2024 15:22:41 +0000 Thread-Topic: [External] : Better alternative to completing-read-multiple Thread-Index: AQHakubaF6HEkTeZSEG8W9KLYFogObFxOY0w In-Reply-To: <87o7a59hks.fsf@gmail.com> Accept-Language: en-US Content-Language: en-US x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR10MB5488:EE_|CY5PR10MB6010:EE_ x-ms-office365-filtering-correlation-id: 88743aa4-180b-4435-7f95-08dc614db8ad x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: =?us-ascii?Q?L1G1gM6/yn1y+d+m88snBYOcy8qopbCVtagLwC5a1CHJ5zHMayKj8PF43VvF?= =?us-ascii?Q?48acFy38vdVpoOaj4lpeTT62UFvv7ENV1wVK9B2N1neJcdZdir6HIK1NFFjW?= =?us-ascii?Q?cOwIfg21XFnCLJNPbdzs4ncQ2Midp02BvBY+Y/DFtfmC7WIm+17wuca5Fl5B?= =?us-ascii?Q?ge4hFK8USDqgpgSBIAueLwc2+zLuoMiB9QF0t2oBEAu0yyPpTxTMX1nIu1SB?= =?us-ascii?Q?4T7jsh/e/Eg3WcW+4gzC+OwP7Lz2c6cy109K39zfgbXtHpHbb7Oyv570T3R9?= =?us-ascii?Q?eMZhkbM+cRF5DdGcVFQtadclZf6pIJjSywPJWTOmqVO2OdobvNzLmsPCZOk8?= =?us-ascii?Q?ylUqW8V2czijgtMCfTDy7YpXtNFIcL6ChjUo/3YSDIOviqvnVY9qoDbldPQh?= =?us-ascii?Q?GLLymO5CrPUxhp/2ZteXFvZst7fORTM4GJew5UPi5CIWqngNPBrEIBOBjKMv?= =?us-ascii?Q?Q5YS3axcjG5x32Dn6e1fBUCUOMAJsWESYSgBNIPtrkwU+RXFzcdCrp2cItqb?= =?us-ascii?Q?no0Khe0KEElHiKUCPS3tvoZo7PTmqUVZ0GW4mY51l3xECmKLaguQseFML8oN?= =?us-ascii?Q?P7zvg9bMSN199RKaABcuaFgnK6Ow6cCmA8RJvyh0ZYC+zY5KfQytBU08/efZ?= =?us-ascii?Q?+RgHU x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR10MB5488.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?vq5PYy21APQYlg26eJoAa8810+ZSjdr/7wdBSIhWQfkNHehVKBgE5PFU6ptV?= =?us-ascii?Q?wkflxJDpGMG6VN9kQRwCCCS09Eg+wSeQFYXgKf5JXfoEcDP/C3EwDUWakzTq?= =?us-ascii?Q?y0gg0VL8GU+oxPugWdMsra6P+s6fKVj/WWl1A/fxhK8Q3yWy/i9S/7W6ra3T?= =?us-ascii?Q?NmYQgh30e+6RDjAgNHEuv3+duJ4bmD7yP2rZvEhMKHhDsDIyUTNhdROYwVqE?= =?us-ascii?Q?cmyNkTAYMrwNhR0WBzJQMY14OgEDvry/bduZaNx8rM2uupYt9aDfJAFugfvz?= =?us-ascii?Q?MXGeYiON1dW8mJQ6A5yi8V3sAIOAUelPV0DCZalgtEBKdRX6fgF8pEpa6UJp?= =?us-ascii?Q?7/8TOeeVb+Aj3wt4TEfw5SB2F95PRv8Xa5OOZ+fZpsaJPaocQRt3jB19WeUq?= =?us-ascii?Q?p5JOt32MT5dpj0NF95kD7dwUJdPX0iBiba8PVBJSz50dYeJmSGrxw29znj6Z?= =?us-ascii?Q?OJAqdCgGwqNpxselcCtlb7EAl2IswVzYmWEcg2685RS0rFrgzMTuSuMmLla9?= =?us-ascii?Q?b8FWeSmE/KAumMSGewsZp39e4ymvus29PTW8uNhvFNN/rt4nLOADyxU+t0qA?= =?us-ascii?Q?zWI6noXiyG3DHzP/tlrjhCFjR9oa4xr2NBPCcP/k5LaKAuP+mCedr3tsnSCI?= =?us-ascii?Q?ys X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: lBAj6ozSlaKCIBbGad9CTfIoJJA6a1Sn8/9Pw/5dIOBAIs9sbKoVODsVroqQPsTQhJBZKsRC4fmR/szv/1c+b/dCugDhkKKzElrpweMAOdFJc3QQNIGQtmgnlp/kNvkbTQdmruMyfdIyDmHpRu8quoYlKklVTfA+KP6k+dwbTGblyXjW/WYO76qHawnYg/nzLsb6KOUOO7z617ixACPBvvjWEgRakVAprUe+IiS/e4yoo4dDcCiGulzej8RCCGq9TvkR1FN4aEa4u5WvgDOSn38FvbFusRM+lZvT8X9TVypup2uEcFdY/U6rgzltz5LJ4HvjKT8KHDigl8q3Lq/xt0Mdrb9Xm2SV28psTqpjttLKI3e7w1dvRU7f3RLAC/hRfW7qbAA0f0VQuUWHi5AVDuSMYtn1IJ702QBfP6rX1tORnHBpmly9NDkf1jKBRe8UXUoEvQUhQkVsir/9+3kFfkwhg8Ew2zwFDovQsvgUmOv7gbMRFXIxJReAhlgJdSVvTRsw4dSSsLsP1CJjBZEcCKcVh9oOpkeOPfx0hTw8cbtoTXabscYnQQCQtHcsnFsr3Y43c+I9ChB34us7e4Aizr8WoCljZOP+Qv/610VmW/o= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR10MB5488.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 88743aa4-180b-4435-7f95-08dc614db8ad X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Apr 2024 15:22:41.8327 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mRjB39sqvAEt5IfcEXJ8vZBEAafqm7fLWSI9pAM6aABza4ax7587lRiboqI5cyxDpgHmwWN+90RVAcDmj1r17Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB6010 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-20_13,2024-04-19_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 suspectscore=0 adultscore=0 malwarescore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2404010000 definitions=main-2404200112 X-Proofpoint-GUID: 0DcXrenQdKO_KRUFUoh5UzgqLC0-GBLb X-Proofpoint-ORIG-GUID: 0DcXrenQdKO_KRUFUoh5UzgqLC0-GBLb Received-SPF: pass client-ip=205.220.165.32; envelope-from=drew.adams@oracle.com; helo=mx0a-00069f02.pphosted.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, 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:317884 Archived-At: > 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- FWIW, Icicles does something similar (since 2005): "multi-completion". ____ https://www.emacswiki.org/emacs/Icicles_-_Multi-Completions#multi-completio= n ____ Multi-completion differs from `completing-read-multiple' in several ways.=20 In particular, it completes each input pattern against a _different_ set of candidates. `completing-read-multiple'=20 completes all input patterns against the same set of candidates in the completion domain. E.g., Icicles' version of `C-x C-f' can match both file names (first component) and file content (second component). In effect, completion candidates are themselves multipart. But a command can optionally hide any parts from display in buffer `*Completions*'. E.g., `C-x C-f' hides file-content matches. ____ The key used to prompt for another input pattern, to match the next completion component, is, by default, `C-M-j'. That inserts the chars that are the current value of variable `icicle-list-join-string'. Its default value is the string "^G^J", i.e. Control-G followed by Control-J. That odd value is the default because: * It's unlikely to be part of a completion=20 candidate. * A newline (C-j) visually separates the multiple component input patterns. * It's not difficult to type, using either `C-M-j' or `C-q C-g C-j'. Icicles displays the separator string as just a newline (`C-j'). (The default value of `icicle-list-join-string' has property `(display "")' on its first char.) A user can of course use a different separator string. Likewise, different commands can use different separator strings - e.g., if input patterns are expected to be short and simple, then just a space or a comma can make sense.