From debbugs-submit-bounces@debbugs.gnu.org Mon Aug 25 11:59:13 2025 Received: (at submit) by debbugs.gnu.org; 25 Aug 2025 15:59:13 +0000 Received: from localhost ([127.0.0.1]:50904 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uqZbF-0006d5-2X for submit@debbugs.gnu.org; Mon, 25 Aug 2025 11:59:13 -0400 Received: from lists.gnu.org ([2001:470:142::17]:40716) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uqZbA-0006cl-S8 for submit@debbugs.gnu.org; Mon, 25 Aug 2025 11:59:09 -0400 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 1uqZb4-00079b-5v for bug-gnu-emacs@gnu.org; Mon, 25 Aug 2025 11:59:02 -0400 Received: from mail-bn8nam12olkn2103.outbound.protection.outlook.com ([40.92.21.103] helo=NAM12-BN8-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uqZb1-00045g-Cz for bug-gnu-emacs@gnu.org; Mon, 25 Aug 2025 11:59:01 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=b+4/RKhp0azGmxppPzp/8I42qdmXtJEapiVroQJ9+oO6ajVMw6yEY9T48H/Ye23gqTd2O6+FQLIa47aYedcWzuQsZlxa0bmVYHpoJxDYMRmhNXHhjgK9f+pMh9Tgaqs0axnqMw5O4o2IOBs3msiFGPvesgCGsNaZH+OdO2K+1aEurLmNFBKzCHjqfUKKdnlspJK3Kw7vIhz6HNoMMoXDXG8OMSdqZXPlgapieWnMn7IvEaxKKtzzlXEKMzLSafunElO2uy9RGm9MzsDvLxM/o5TADmP/JpS5PeFPM1a71GL92vsblApOt9utUuhuqMC/vdCZTPPDD/S4A8vC1FBgvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=so7CX7qzY/ptMTjyQWilESviDsRJAr0gyegRQ59DxoA=; b=xeqTY/3/eAV/gQlVjJ0NMMiDgPB1P1/4Il/c0nP3CwTsGF1mc0W9eI9DvCgGBJ+ab9i70o11bowtgFuw/edWKsXpl9r39Ucpi9SBEadkEPntsAqWKsseCH885FFr/GI4eJZQ9d/VYZI6Dp8dGZuiQgab2JqkSxjCnhWcvxSqLf2a0zThBGXp0w7u6apcW2Nc/0WshNwCTlp/aS8ectXuyalbOwWYQ0UKTrZY/2XIQ6P+T82j1xrZhPAW09B3kl9tTZz0TXsKGIMlQfkqB+X1rl0hOX+PsEAerTFlDNt44IcdEHNFQvjedt1IwQS+Hn/vSqtOZRaRfZRWRe/1b4a1MQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=so7CX7qzY/ptMTjyQWilESviDsRJAr0gyegRQ59DxoA=; b=kioyzNgm3MNcsJIHJg4s2lfb9tFcK1fyGgJlfr1G0a/FbtN9UPDQ5ynTHXwjfahq2PMk+DDsd4R6SVttnxXW6pJXX2pA8EaAfXaJ8tjie4Kbh9s+VidFGzSC0G3MzA1kNOKUCs9JmD82LiCfva1axQb+dxieu73lr/K+qpJWd6JRBe2ug2vq0p6japmn0YmbH3Hkkmr6edoD4+UKmHcNPojpGndPTu9dFOUuCB4FL8NX6/KqUDqdrp4vn7heVcioZV7qcRgIRs5uR542reQEdFvo2EizHUUto0iVV8//isQhN5ouZWfumAEntKmeHiLeyxc2aIpBHrXRVxGCF5T+0Q== Received: from SN6PR06MB3935.namprd06.prod.outlook.com (2603:10b6:805:21::11) by PH0PR06MB7349.namprd06.prod.outlook.com (2603:10b6:510:5c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.22; Mon, 25 Aug 2025 15:53:51 +0000 Received: from SN6PR06MB3935.namprd06.prod.outlook.com ([fe80::9f7:a06a:fd92:9751]) by SN6PR06MB3935.namprd06.prod.outlook.com ([fe80::9f7:a06a:fd92:9751%3]) with mapi id 15.20.9052.019; Mon, 25 Aug 2025 15:53:51 +0000 From: Gabriel do Nascimento Ribeiro To: "bug-gnu-emacs@gnu.org" Subject: [PATCH] Filter out selected buffers in multi-occur Thread-Topic: [PATCH] Filter out selected buffers in multi-occur Thread-Index: AQHcFdaaQ/MW9nrj0ECxzr6S7kTo3Q== Date: Mon, 25 Aug 2025 15:53:51 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR06MB3935:EE_|PH0PR06MB7349:EE_ x-ms-office365-filtering-correlation-id: 8812d7d5-26de-4d81-fdb5-08dde3ef9675 x-ms-exchange-slblob-mailprops: znQPCv1HvwUykhYCLh9DY9coCVULpTnXPqomW5h2s5fhdOClXVTJiUSBRKmHxwLWTvf0/uI3Bsqq8nKIvAC/8Fz1PsmDiW3F9QddN505m5KHBrtAhviOuBDAB8PXKSWA4b60EP1gmncwBoFaKDNGGsy1XnELZpf8RGeL/B27gObx9mGYLAPFF0LE9lZd3cpnbQHUVjZNEpU9YywPrl1f6qtNI+5Zj8aU3cKox9zlr+l9Vvx3+5NTzpfkoPsM7pTs7yKQEro2xKfVp9HpM/4vQPj3h8Q4lnc4L266B7olM1WoPC2JQFNecJnvQSiuqodostCv0OjCENailZfCEoSGfXU/DksxKD97lE0rC+2eGO4O3wYD+PkZK7EJixhD+tPxVZFHEd0XQgDJ5BS52FH1fXeelX58gniuQc/tkssuawNloUeTv40r+BedH+x9auXqgq1qbbv5OnezwAR4Nz+RcnS9V2f22DGgdk+E/V/SHc40kkGHJzvfJtr9dFVOlrWGq19RN9qbFjEWaplgGGV0i/kXIOYIj1AdjDbJBPLTbdLdE19r5vX6+D4yk4ES3B2rXbiQQihNTycB+PrnwwY5UGeXQQpoAdnaO2H1ybObEsNL2o94KCaQN50Dg3ZmT7Js8pMkdzXpwRHBMAJuL94viPOi5H4+o4W2hkNRWSt0cUwsKTuSoYWgzBnLkQ/MYq7cCo1Sy3fopzxVHStp3pJsCErLYycuOJJrNnCwbE+wxxPFMCuhJfijCFvGgex3gNh3K6Ifvi4VPZg= x-microsoft-antispam: BCL:0; ARA:14566002|8060799015|8062599012|19110799012|15030799006|31061999003|15080799012|461199028|3412199025|39105399003|40105399003|51005399003|440099028|102099032; x-microsoft-antispam-message-info: =?iso-8859-1?Q?BZprr105acYjOWGB3s7ndhH79fwZxVBqajodkhroi+Hy2ZvRkF5i3GKf6w?= =?iso-8859-1?Q?6sflx9ORA608SnBKXBDzS1G4DZculXEFZ0ZixBnA1SCYMGk6vkQR/flcix?= =?iso-8859-1?Q?rIrGMmsIhjClEgULmclZYLBgXb3/3ipf/pKXDyzIU0O91SfXJ5noPdUgtF?= =?iso-8859-1?Q?YRQrH9z8ZcTpkCsymn86lcv5V4oFLC9AKiwzp+ofwXOAzd4fBur834714F?= =?iso-8859-1?Q?ffha58Xos1LvMRhgPEBUxI7JdTVJdcvLDspY5g8J2vqmjP0wAuiBoTdybD?= =?iso-8859-1?Q?ftCwY0NOtFL3KJIL56aJqRc+MWkTBe5qEjiesqHTtfidlUXBOD56DL/Zq/?= =?iso-8859-1?Q?BO7VJiIXAxysadimLQa+9Y8EhyrjWvUO98U7RAcrSFVlCK3t/AoYYRUtU9?= =?iso-8859-1?Q?TzATIhFPqAJ7IjxN0cqd5itx0Q6udup/R9KclEF+291C/4KqeaBHvOuysu?= =?iso-8859-1?Q?bMDo5z70U7MDp3ALDE6iEjh8qJ3MOKMsC655cE7kiS0QO9JQe9sXn9gTk5?= =?iso-8859-1?Q?iIdMLlygnalii2BBY3bYh6rA/X/PYRMAJOz6t2uDHJWlcJt+XJ0YhsYqs0?= =?iso-8859-1?Q?BjmMEZDsSaNt1XnakDNtVThxrHl8ipfUPB4it3zuhST+/8jgmJamAknSBm?= =?iso-8859-1?Q?fAbvxkiGsfzxauX/Q85UzbKIIfGaMFNGWuiJoIew4waHkCyU5vc0MYjONe?= =?iso-8859-1?Q?WelGF655hUzCdR+6ZQEoeAXamKqnsWzB4thkgEK3vBcv4aUroM6ZhRLYxK?= =?iso-8859-1?Q?lroJgvPNXrs5VRwEElhbDbBIekrtqQsV4IaJgAWRnvRgVwRR6b63emhFul?= =?iso-8859-1?Q?wimNnZf1SfTzpkxkY1FdvgXBI+xQYeNY3FkfluF2x4IF9W2MUyiAZJjWCS?= =?iso-8859-1?Q?NmDKmCX78hDxMPpwi6CLCTtMDZXOdUVjg1AVVlU18dzessvFsqbBPSIO8I?= =?iso-8859-1?Q?pPsRimgsfiZFoA2BtLasX2nXfonBnGB3Cwve3kDS97ANO2+4hqYPJNv2hJ?= =?iso-8859-1?Q?RNRADdpd/fR4shAyN/gvVQyUQinChf7C96kwGOJxoWKpZt0Oji+L0sg3a4?= =?iso-8859-1?Q?31dxxI3idrewHncA7iCa970UYHoe1X0Od2FlrD+HB7O5Lg/zz7nP2MLxCi?= =?iso-8859-1?Q?vnbe4cGNetb6sGLbiZT2ymfoOWmWrC2dyedNrpLdhZAdOBo/RYMAgay0Tm?= =?iso-8859-1?Q?eDRG7Ju/OrWbYOlxoJYJ988FaLncsMXqrO0nrrDHbShZxuSRSUZbKt7Z/u?= =?iso-8859-1?Q?GFLwWVwB5hE+Qut7SKRQUoaAUBgnVl9nWzBTbsdHisFDD0jOHcun+5rMcL?= =?iso-8859-1?Q?kv8E?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?W9MvFTwXuxKTxoVIYjxJQCJs3XaY0t4nXLtLOW4Nmhx72+rHTKuLDcOasw?= =?iso-8859-1?Q?zdHcGcRLvAASn05Pkmc/4crSGJvbkVAXGN+hUs1YwH7V0DeOb0WExgCn5g?= =?iso-8859-1?Q?C4t2cncmQesKUAVZkAU6XKVrpyrclUCiWd6uf81Y+ED44g6hLpCUqLP99M?= =?iso-8859-1?Q?kFY+0U3kdBt8iqkKAwfcOSZDNY2v9KG4ijWhfYV/kBoyASn0fXqnda51ze?= =?iso-8859-1?Q?AkJJRJ8e9lamJ1Kl4jGhGsGYX3+NSDIYWKIzjoE4smN3MGqZU6tSqts3LS?= =?iso-8859-1?Q?toEFQgSonRZXqwPwIWhd6j6/C7D0E6kgowPrMnhrogGcf1zD3X8rL3Eqlq?= =?iso-8859-1?Q?hnScw/IbOyOByZczYKU25JVqa7EUGq69wkTF5KBG4A5x1O2cSvAzKaLYOk?= =?iso-8859-1?Q?dcH6Hqm5JUkfycVDsOXpHT1+8KHsRK8OZ0tjkvhZMH7eKxgYrH6lsJZ3UU?= =?iso-8859-1?Q?lkosJftTrHeMwACg77bQuzT6S6lBe0HJ1nprYGc4QLVMM0EcOgw5ThlLTo?= =?iso-8859-1?Q?6WZki6qxRJUvGXgi/WLpqKiBQO/ucapNCnNcRzSc+RIp6LQMBEPTsn3b4q?= =?iso-8859-1?Q?/dGkM2xLnCqOxuRqADrISWwyjQgiNAqFiu3aEsmMFTASouE0LnQ1Jow60J?= =?iso-8859-1?Q?3Mtx8P1dUpsB8I3HuImNZL/AEE8PXZhSBuuaR6bkwuoKpOzGm+fsngPEKP?= =?iso-8859-1?Q?aYyK99DOuauilCTt4ADwUT29N0Qi0NkqyRr+MTEHa+mTb7bVznpkZDX61l?= =?iso-8859-1?Q?eqUzhlR9HtV4yhAME0vGDdSALy9rrEALxsoPeLhbjPvQlu9cvQ7kgfTGAM?= =?iso-8859-1?Q?3nMDYS0gWneQmkyeqJBOs64QLJk8SwiBalIXF3le7eU5tM3aKLpHBxHLWh?= =?iso-8859-1?Q?6xYqXzypj1Im/7HfMkuKNY+BUJz/yf3WGuTMlnSrdjETXyoZ/CvLFMTnw0?= =?iso-8859-1?Q?DMzwhWABGq8jGR8IcthiHiPl5c+uL52N6df+jGZwYRy4vQ2kuEHUlNnKDe?= =?iso-8859-1?Q?+WfWIKg2nAePAuynviv5H1sNmWoqZO2dY74d7lIFjZ+gtribGJ/TqfMN7J?= =?iso-8859-1?Q?7eWCLZSee9DrrjqZyTH3dwlmYoL5aFU+KQ8iZ4BRxeoHMLMAptXryWZymB?= =?iso-8859-1?Q?gqbahrIXMjFONqMIZgW1qw2xNyWANHkSTmBB+NUMWu+qyOz+gOE8zMHS4/?= =?iso-8859-1?Q?vfKP5s7YKdCOqctfvC3er+CEjkMleIbA3c2MMrv8sHCFNESe/neWH+hJbr?= =?iso-8859-1?Q?GWyPlk+e8uWT6xmesAHOxMrJUFufSrXuPEn7p5aRM=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-8534-20-msonline-outlook-a1430.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR06MB3935.namprd06.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 8812d7d5-26de-4d81-fdb5-08dde3ef9675 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Aug 2025 15:53:51.7253 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR06MB7349 Received-SPF: pass client-ip=40.92.21.103; envelope-from=gabriel376@hotmail.com; helo=NAM12-BN8-obe.outbound.protection.outlook.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: The proposed patch below adds a predicate function to read-buffer in multi-occur to filter out previous selected buffers. The current behavior does not have such filter, allowing users to select the s [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2001:470:142:0:0:0:0:17 listed in] [list.dnswl.org] 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (gabriel376[at]hotmail.com) 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (gabriel376[at]hotmail.com) 0.9 SPF_FAIL SPF: sender does not match SPF record (fail) [SPF failed: Please see http://www.openspf.org/Why?s=mfrom; id=gabriel376%40hotmail.com; ip=2001%3A470%3A142%3A%3A17; r=debbugs.gnu.org] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.0 SPOOFED_FREEMAIL No description available. X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) The proposed patch below adds a predicate function to read-buffer in multi-= occur=0A= to filter out previous selected buffers. The current behavior does not hav= e=0A= such filter, allowing users to select the same buffer over and over, which = can=0A= be confusing when selecting multiple buffers, since users should keep in me= mory=0A= what they have already selected, and shows duplicated results in the *Occur= *=0A= buffer. I don't see a reason for the current behavior, so I propose the pa= tch=0A= below.=0A= =0A= Potential improvements:=0A= =0A= 1) When the buffer list is empty (user has selected all the buffers), it co= uld=0A= skip the read-buffer and go directly to next step (ask 'List lines matching= =0A= regexp'). Not sure how to implement it, since internal-complete-buffer doe= s=0A= some filtering of Vbuffer_alist to remove internal buffers, and I could not= find=0A= an easy way to get the length of this filtered buffer list.=0A= =0A= 2) I believe multi-occur--prompt is not very accurate in case an user chang= es or=0A= remaps related functions in minibuffer. For instance, I use=0A= icomplete-vertical-mode with different keybindings, but it always show '(RE= T to=0A= end)'. We could make it smarter, or change the prompt to indicate that an = empty=0A= string terminates the buffer selection instead of trying to guess the=0A= keybinding.=0A= =0A= =0A= >From e3c2932ee551db6a008f078579ae6550356647fb Mon Sep 17 00:00:00 2001=0A= From: Gabriel Ribeiro =0A= Date: Mon, 25 Aug 2025 12:38:12 -0300=0A= Subject: [PATCH] Filter out already selected buffers in multi-occur=0A= =0A= * lisp/replace.el (multi-occur): Add predicate to=0A= read-buffer to filter out previous selected buffers.=0A= ---=0A= lisp/replace.el | 20 +++++++++++++-------=0A= 1 file changed, 13 insertions(+), 7 deletions(-)=0A= =0A= diff --git a/lisp/replace.el b/lisp/replace.el=0A= index 8227056e012..03b274c59af 100644=0A= --- a/lisp/replace.el=0A= +++ b/lisp/replace.el=0A= @@ -1853,14 +1853,20 @@ multi-occur=0A= (interactive=0A= (cons=0A= (let* ((bufs (list (read-buffer "First buffer to search: "=0A= - (current-buffer) t)))=0A= - (buf nil)=0A= - (ido-ignore-item-temp-list bufs))=0A= + (current-buffer))))=0A= + (ido-ignore-item-temp-list bufs)=0A= + (buf nil))=0A= (while (not (string-equal=0A= - (setq buf (read-buffer (multi-occur--prompt) nil t))=0A= - ""))=0A= - (cl-pushnew buf bufs)=0A= - (setq ido-ignore-item-temp-list bufs))=0A= + (setq buf (read-buffer=0A= + (multi-occur--prompt)=0A= + nil t=0A= + (lambda (b)=0A= + (not (member=0A= + (if (stringp b) b (car b))=0A= + ido-ignore-item-temp-list)))))=0A= + ""))=0A= + (cl-pushnew buf bufs)=0A= + (setq ido-ignore-item-temp-list bufs))=0A= (nreverse (mapcar #'get-buffer bufs)))=0A= (occur-read-primary-args)))=0A= (occur-1 regexp nlines bufs))=0A= -- =0A= 2.34.1=0A= =0A= =0A= ---=0A= Gabriel= From debbugs-submit-bounces@debbugs.gnu.org Wed Aug 27 13:16:55 2025 Received: (at 79310) by debbugs.gnu.org; 27 Aug 2025 17:16:55 +0000 Received: from localhost ([127.0.0.1]:34390 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1urJlX-00058n-0X for submit@debbugs.gnu.org; Wed, 27 Aug 2025 13:16:55 -0400 Received: from mout-p-101.mailbox.org ([2001:67c:2050:0:465::101]:38806) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1urJlS-000583-R9 for 79310@debbugs.gnu.org; Wed, 27 Aug 2025 13:16:51 -0400 Received: from smtp1.mailbox.org (smtp1.mailbox.org [IPv6:2001:67c:2050:b231:465::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4cBrmS2kpVz9tRM; Wed, 27 Aug 2025 19:16:40 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; t=1756315000; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=nNZIWUBCEnWhhGyVq7oXCDZhPjZq5T138t9EB/ifOTI=; b=BA8bfZfwBsLrzKmdPV5PqlMZqteMy438wVZcV+xdxffjIacCfeAA7GkL5qkEduiQfpyhhb IQzbHoNojF4Ng5tUYS+YNv8QXwBb2zY3VfaRr1Eg/etMrCKaQ9FiMF1fGWcrgktvSJ9EPz GO/LWOjDz3hMmf228h3RJScrK6zvomrPD8Sohbm30dobr7wTzkZFkT7u45kCLX5FFhvRh9 m+QofG62osQkIiQgU6PaocNUHI3mJ2rEGGAlaWNZ9P1QsU6Vn1WMmVxY27mxNdPfsH5kL6 BvqJOUE9jPVWjkEfe9/oCs6RbkiEMnp/aYaVV2muFnS3cF3jD3CzwH5u0EOqLQ== Authentication-Results: outgoing_mbo_mout; dkim=none; spf=pass (outgoing_mbo_mout: domain of juri@linkov.net designates 2001:67c:2050:b231:465::1 as permitted sender) smtp.mailfrom=juri@linkov.net From: Juri Linkov To: Gabriel do Nascimento Ribeiro Subject: Re: bug#79310: [PATCH] Filter out selected buffers in multi-occur In-Reply-To: Organization: LINKOV.NET References: Date: Wed, 27 Aug 2025 20:14:07 +0300 Message-ID: <87wm6o8z6o.fsf@mail.linkov.net> MIME-Version: 1.0 Content-Type: text/plain X-Rspamd-Queue-Id: 4cBrmS2kpVz9tRM X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79310 Cc: 79310@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > The proposed patch below adds a predicate function to read-buffer in multi-occur > to filter out previous selected buffers. The current behavior does not have > such filter, allowing users to select the same buffer over and over, which can > be confusing when selecting multiple buffers, since users should keep in memory > what they have already selected, and shows duplicated results in the *Occur* > buffer. I don't see a reason for the current behavior, so I propose the patch > below. Thanks, good idea. > Potential improvements: > > 1) When the buffer list is empty (user has selected all the buffers), it could > skip the read-buffer and go directly to next step (ask 'List lines matching > regexp'). Not sure how to implement it, since internal-complete-buffer does > some filtering of Vbuffer_alist to remove internal buffers, and I could not find > an easy way to get the length of this filtered buffer list. Makes sense. Can you do the same filtering as in internal-complete-buffer? For example: (seq-filter (lambda (b) (/= (aref (buffer-name b) 0) ?\s)) (buffer-list)) > 2) I believe multi-occur--prompt is not very accurate in case an user changes or > remaps related functions in minibuffer. For instance, I use > icomplete-vertical-mode with different keybindings, but it always show '(RET to > end)'. We could make it smarter, or change the prompt to indicate that an empty > string terminates the buffer selection instead of trying to guess the > keybinding. Changing the default text to not mention RET would be nice. > @@ -1853,14 +1853,20 @@ multi-occur > (interactive > (cons > (let* ((bufs (list (read-buffer "First buffer to search: " > - (current-buffer) t))) > + (current-buffer)))) I wonder why you removed t from the REQUIRE-MATCH arg of read-buffer? This allows the user to enter an non-existent buffer name. > (while (not (string-equal > - (setq buf (read-buffer (multi-occur--prompt) nil t)) > - "")) > - (cl-pushnew buf bufs) > - (setq ido-ignore-item-temp-list bufs)) > + (setq buf (read-buffer > + (multi-occur--prompt) > + nil t > + (lambda (b) > + (not (member > + (if (stringp b) b (car b)) > + ido-ignore-item-temp-list))))) Wouldn't it be more clear here to use 'bufs' instead of 'ido-ignore-item-temp-list'? From debbugs-submit-bounces@debbugs.gnu.org Wed Aug 27 14:14:55 2025 Received: (at 79310) by debbugs.gnu.org; 27 Aug 2025 18:14:56 +0000 Received: from localhost ([127.0.0.1]:34796 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1urKff-0000yR-2k for submit@debbugs.gnu.org; Wed, 27 Aug 2025 14:14:55 -0400 Received: from mail-mw2nam10olkn2080b.outbound.protection.outlook.com ([2a01:111:f403:2c12::80b]:55265 helo=NAM10-MW2-obe.outbound.protection.outlook.com) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1urKfa-0000xj-4P for 79310@debbugs.gnu.org; Wed, 27 Aug 2025 14:14:52 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xycCCGaUsiJYgU5kAk24aMx4Qrvj3wQ+3u30NDMS13vXtnNFLMQauVodstbtJKqe0cI0Q+nKfeQtfb8nf/tuO6wZ/nmLmLWiInh2OFc35w9L9kkCs2af6SrcPfz6TEkU0djyYb8YiYmvkmjto5ptkdxKYIHAKcqNTNmtoeWQmMWBLxKXSPibx6UvkdqQrzWkm7aj9db/7uk9/hAK0vvIc4KvB8AkdPbeHA+1KAPmtNEYtUa18uX31Ie7almFvbT18zm1fbJBNfPCOvyE1hsvQjliL+d+t4wb0KMdXQjp1WH3ApdWIypjonS0ByVfPIbG5hZP4PpulYnc1vhVJ2T7PQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=wODwVu9XFyIqaWaIiutug8Hin4zzEGNMA3wDME0Qluo=; b=WjDL2IOBL1NMhW8MozToRkb2b3z9Uyilk4+cpjm9fDyDeo1RrovPnoyjI2hfKPdAWH2mekrLMgTXmHFcyZnpL1VoqlnJmt9I9uTPIoHkJ420fSJ2dQyWFDQV6nS4FitM1XkNMT3uiJCAqO1ysbcApZGHGETNMdD5W32Uxj41bzu5riljXzAXFNRV6i+zqCCtploPUr+HnX5bGTxPqami8s9cGdZRA3P0J8ufXWsqr/iNxI4/SKWMailJOk79+wBkA+Ht+U4VIFuRlYGeuVv6jZ8ahV/i+Kgev9yflhNtw9S/GaN5lKEtUJC6nsTVDo9JJWjUxntDOfP7p72rQ6krVA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wODwVu9XFyIqaWaIiutug8Hin4zzEGNMA3wDME0Qluo=; b=L8XlXXliBNKQMTXdjWrqPrFxk68/u7CH1RQtmXSUH1rv0ezmA4umGb5h/csuh1Zg5o6Wu42gGGQXCz+jGAcJDl+0wG3gGFZ4+eyvYxNB8XNK8GCORbw+ybJfzzwSCyRMVGSifrlUa4SsKM3r9homBVIUg37dDTluZH8YRQAmU3w4M8D3hZgzL/jFD1SBLqqJeFko9Q2YhWRoDGLQzQB6Y+H7kX3x6XuIhu1f61IpzfHxM8885lfgOp11PHEiTrOiVODM9IGYWkPQHrdX2PkviL1+IIqdS7iRqwfGUj8bKWwVb8MzyPP74iexp6B6YHebEOwOtL83SiMzB3xzUCbUKg== Received: from SN6PR06MB3935.namprd06.prod.outlook.com (2603:10b6:805:21::11) by SJ0PR06MB8925.namprd06.prod.outlook.com (2603:10b6:a03:43c::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.20; Wed, 27 Aug 2025 18:14:41 +0000 Received: from SN6PR06MB3935.namprd06.prod.outlook.com ([fe80::9f7:a06a:fd92:9751]) by SN6PR06MB3935.namprd06.prod.outlook.com ([fe80::9f7:a06a:fd92:9751%3]) with mapi id 15.20.9052.019; Wed, 27 Aug 2025 18:14:41 +0000 From: Gabriel do Nascimento Ribeiro To: Juri Linkov Subject: Re: bug#79310: [PATCH] Filter out selected buffers in multi-occur Thread-Topic: bug#79310: [PATCH] Filter out selected buffers in multi-occur Thread-Index: AQHcFdaaQ/MW9nrj0ECxzr6S7kTo3bR2wFCAgAAOunw= Date: Wed, 27 Aug 2025 18:14:41 +0000 Message-ID: References: <87wm6o8z6o.fsf@mail.linkov.net> In-Reply-To: <87wm6o8z6o.fsf@mail.linkov.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR06MB3935:EE_|SJ0PR06MB8925:EE_ x-ms-office365-filtering-correlation-id: 77997012-1c64-4a29-2d08-08dde595979a x-ms-exchange-slblob-mailprops: YfhX3sd/0TVWrg+fxRScxfg9v9HXnUFl4FHPVqGsxtPhORvuo7xGU83t74DdkNJquJFHcahIyMrqEpIoTReAf9lXVkhL/nS+xVnHcC042Enx1kPHBkUvZVq5MzEObtXulZjE0yJDeg9sqw05ZedwI+rWov7ajVPkbDbQiQEUq+lr2030pRK6frnwr4tA379YoRsJR8GBVmM7uyRIMsjrmgaZ1i6s4BJiG1rZvgxbLx2s6gDzNv6e2gm7lh+fZX0Sk5jzzgQNVMob7EHZ6u4FWL6wtioIKDQT+GABkjuFxgXjUANgniUJytY8l9dICTjDi0thoqoxoqi4KIq3r3ezDX8HUMwkkxafVkoJXOEnme0UD25xu+THleOgACiauJ/zX6138R992Z57Zk8PaWUkWUQPH2jRfnUMbx+Qt/BfLHcyoKV/hr1UoUDQeyPMo4Pi/L6PBohFoQDZZ9694c8TDURogxkdWuQo1sUxUX9XN5WvpZjvo4xel7hl6ifXwXq34jeXMhiC7MqkbxdcpxsMXEHfo7KjnyUEGwEOgyYBHXpSGUyPDdlWLxVUj9u+ObwjApPx7hJE7LElBz0nFLH1NMRWLUOB5qaAYDY+GeLCkF3DK8u9vsxbWVmhZO9vwxiXKWg8B3z7qG8AEx4xEdq6AhpeVlELOVhj1wlk+pKmWpunF2rQZZfUARxI5xWcVcLRQYiN16GWGAPYhn2RE+fgtuOWIw+9W5+/aLoEdERJ+7nz/QjgZ77+ISgqxrXurRVtMBlEEvnIUJKDbMaIP6cQyGG7U8b90R8UA38Z0r/HRCo= x-microsoft-antispam: BCL:0; ARA:14566002|31061999003|15030799006|461199028|8060799015|8062599012|15080799012|19110799012|102099032|52005399003|40105399003|3412199025|440099028; x-microsoft-antispam-message-info: =?Windows-1252?Q?r7qVyTK6TeoXdqrR0NvIXwZJMVv5a9hbN/Nf+JAbfCIU5LRTiHERnLWh?= =?Windows-1252?Q?DtAwIm+SREqbo2PwKe0mZ9y0w2cV+UjcUvJIv6mVaYsppX5wzGCrxD02?= =?Windows-1252?Q?exDNKFqOzLMCDpe0+YyDEE8mC/XKIMjRJSe5oHYcYNH4hsqklMOqH1TY?= =?Windows-1252?Q?xrWiJK3nGZCluqyVFduclZNbxWqxv3K5JzwkOd+QlAbl22yQqDyMQ9Ke?= =?Windows-1252?Q?GPVK0k+pPid/cPs9mGihjHxhlv9MjYpD1dDrUpApRlyyo0g4mO/MMMH7?= =?Windows-1252?Q?5S7TYt1GF5Hx1HfqMNF+uxD/kxaa7UD9yBvJy6p1HQ6qIFLvFpV4lRAA?= =?Windows-1252?Q?D6IvSicwXG2LuqOCD7mwJpT3lRGEgIgO94B5nrXg/QXDRUZU6a9gmq3n?= =?Windows-1252?Q?C+3aQ3eM81owX3IWdHvxPPPHEnxW7Xc2W1xNHlm5fp6NePneUfycfTMM?= =?Windows-1252?Q?GJTzMAj2LxqpCNY9X/x9iFYw7bGil6HSLmM34m343ScoNI3KPMJ1quSd?= =?Windows-1252?Q?pwbe1i4BHYufl3+IHn6gAsNbZvL19ka/MrZTPTs0egZHrgqkIYdRNURm?= =?Windows-1252?Q?ZXlogk3x3hirNVamXygm//VBGLlxvsr5DlGr8o1q8mUfmjuLZBwGlk0j?= =?Windows-1252?Q?vYVwHBsO7U7A6K47vpzYGM6kVblicUVAbZ7le+hn7xZd3rty2slNTpdF?= =?Windows-1252?Q?ktxvRSkOStWNERRbljOlEAbpZl/0P799B8UwNNm4zRmWBeu4iUT7B2m8?= =?Windows-1252?Q?kMnRST3R/iq5+DahnPAeUTIZbcx7XgCeQRgbwj3eShBiGmZ6u/JXHmZn?= =?Windows-1252?Q?4iwMZQatmulmqEQ1H3Y/EZYMO3v+d/oNoxN27p2BEFZOhKwVQaX9b0XJ?= =?Windows-1252?Q?M9A5lSXhv6rTAm7DBSHTvYbmIGXaGXOkpB6iKMLhDwv3zVlUDkSl5Jej?= =?Windows-1252?Q?Yov31mTKfvABFxbtxiVmCYGKLP8GBceQF/Aa99LD78+Gz1fx/Yn4lxTq?= =?Windows-1252?Q?XnTtjf/Vl12oEISgs7ZfbLfti9x00vHUHAARip4gZsK4jiI9UGSUmYdj?= =?Windows-1252?Q?VxTspM/FeN9wrPpM/HX42LrSk/2g0vJdYX77ccOuKoWPe4TBTZqTuu1N?= =?Windows-1252?Q?hGIsq+eXUwISCq6mOIhrbcqTeeFoiT3ehz6cYBG6Oky2XwE+X54QpT2j?= =?Windows-1252?Q?uDrqRG5/luUjMKiHvH8LSIR6EMxSr5U6wb2mhZYmNTL6ccUtvjbbWNRI?= =?Windows-1252?Q?Kj7O37SvfbzEwXk4pjFT9xZ9/wVlwG+Rb48u2F2gUrtusUa+yL8wwn4c?= =?Windows-1252?Q?dL2coQ=3D=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?Windows-1252?Q?X+0wQM7SW4p7r1NdiGA5DRkroJSSg+zxrtbrlDLpMWM4VP2KUF1GyMWy?= =?Windows-1252?Q?Yc6RrlfkYUpYU1qcGcB4CoDMaoaTAqUvQ0xQC0Zo/9jO2/BzGtGrfYnY?= =?Windows-1252?Q?tlDy1nhVVKnHnsQWujRmNrN/jaMp7IhOWovUJ9sVkJr6pUnj+bldkjno?= =?Windows-1252?Q?M/nr12Z1XemCI4Fal1L5/EYYZFKy2sqPJwBy7302pRxc6DtTW3CGWkKt?= =?Windows-1252?Q?V8S4mAewDZagelqalOtcO/ArTWbrNfCtCJL/c5qRQY2mPLdjIsbRJk5d?= =?Windows-1252?Q?BsXvpTNqHftWninlPCuO2wm9Zhqh5wZai2C4ihWw/oLy7EySEvHVFltf?= =?Windows-1252?Q?XnZeCnO4DKb5zYS4n5118e90befbEGztMw/Z+TLnN/lAwu3+Ek3tSEFz?= =?Windows-1252?Q?lgrPJBZDLu0RzOGhoxxb9J7ZHyT2/WD59L1J6KQXo7scFWblXdSAIHjL?= =?Windows-1252?Q?ag52jbH1a0IpAMMUthAZ+F+MeCNoJ7x3vEYDDEK7Vq1533orEEZZefYW?= =?Windows-1252?Q?+QOt/G3ycie5lzA5/yc26YCn2LxtAGuCjBm1ZXdvh6cdIjetnO7vRvC8?= =?Windows-1252?Q?/r9xeD/+2E7AYiUUHjl9Hl24hVQMuRr4ghmz+Qut8bpwFTfAr/DByxMP?= =?Windows-1252?Q?Pke20cDLfseUjGLW9DLlb5IcG4Lf3IWR+KEPLEss0XMfBvROflUrsyBC?= =?Windows-1252?Q?e86+gOMq0B3cG5H22X856MVhcd9RWV0C6PsDe8J/g2NreUyY5qiZzAjk?= =?Windows-1252?Q?bms9Nwi73Q3otykC1FU4CtvfREVCWoNqXaR8ZYysiUKZS2DS4bYx3Fxo?= =?Windows-1252?Q?bYvVDeTA2JYLB+FFrEpdQqCN6kUsvjWU/7y/4ewZtT7OgH9yO4NIt2jv?= =?Windows-1252?Q?GSuC7GER/dmEZF5UPVTNpd5/6s79Qgzsjsdbt4yDF7N+uyAdcYnKwIAS?= =?Windows-1252?Q?EiP1sLmAMT+zteisNg7PO6/DujcQ79h6du6RSoww5P05Qy7f0fIXyJff?= =?Windows-1252?Q?uW5G0O4hcruok+eJ5T9XVAuDzbSXp3m+gKAe22bvo7cSOXNfJudvIVPr?= =?Windows-1252?Q?VgtnkokbXFQIZgu5D18ZscFeajtLGy8bJiGjXs87KUoFKkXN953tco7i?= =?Windows-1252?Q?dAE605Eelxtg40uxxItoO/YbG35bYET5va+uyWNLWdV8ve28vhsyNHc3?= =?Windows-1252?Q?/E8Lt0mXdR+pImdBHL7FJeAg5v4QLHwT7qyVPQi6/3gl3S41W615wRMJ?= =?Windows-1252?Q?6jOL7zuEbvsR9eCspJhepatNn1LAFsZC6js20eYHzloZwd73Wz4xjlCk?= =?Windows-1252?Q?xPWL2tNdAwZ0yDkQbGh40ISaybo=3D?= Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-8534-20-msonline-outlook-a1430.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR06MB3935.namprd06.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 77997012-1c64-4a29-2d08-08dde595979a X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2025 18:14:41.2239 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR06MB8925 X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 79310 Cc: "79310@debbugs.gnu.org" <79310@debbugs.gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) > Makes sense. Can you do the same filtering as in internal-complete-buffe= r? > For example: > > (seq-filter (lambda (b) (/=3D (aref (buffer-name b) 0) ?\s)) (buffer-list= )) I'll give that a try, thanks for the suggestion. Of course, if someone wants to install a different patch, that=92s fine too= ; mine was just meant as a starting point for discussion. > I wonder why you removed t from the REQUIRE-MATCH arg of read-buffer? > This allows the user to enter an non-existent buffer name. That was a mistake on my part, thanks for catching it. It should definitel= y remain t. > Wouldn't it be more clear here to use 'bufs' instead of 'ido-ignore-item-= temp-list'? >From what I saw, ido-ignore-item-temp-list (declared in ido.el) seems relat= ed to an older implementation for ido-mode, but I didn=92t look into it in detail. --- Gabriel ________________________________________ From: Juri Linkov Sent: Wednesday, August 27, 2025 2:14 PM To: Gabriel do Nascimento Ribeiro Cc: 79310@debbugs.gnu.org Subject: Re: bug#79310: [PATCH] Filter out selected buffers in multi-occur > The proposed patch below adds a predicate function to read-buffer in mult= i-occur > to filter out previous selected buffers. The current behavior does not h= ave > such filter, allowing users to select the same buffer over and over, whic= h can > be confusing when selecting multiple buffers, since users should keep in = memory > what they have already selected, and shows duplicated results in the *Occ= ur* > buffer. I don't see a reason for the current behavior, so I propose the = patch > below. Thanks, good idea. > Potential improvements: > > 1) When the buffer list is empty (user has selected all the buffers), it = could > skip the read-buffer and go directly to next step (ask 'List lines matchi= ng > regexp'). Not sure how to implement it, since internal-complete-buffer d= oes > some filtering of Vbuffer_alist to remove internal buffers, and I could n= ot find > an easy way to get the length of this filtered buffer list. Makes sense. Can you do the same filtering as in internal-complete-buffer? For example: (seq-filter (lambda (b) (/=3D (aref (buffer-name b) 0) ?\s)) (buffer-list= )) > 2) I believe multi-occur--prompt is not very accurate in case an user cha= nges or > remaps related functions in minibuffer. For instance, I use > icomplete-vertical-mode with different keybindings, but it always show '(= RET to > end)'. We could make it smarter, or change the prompt to indicate that a= n empty > string terminates the buffer selection instead of trying to guess the > keybinding. Changing the default text to not mention RET would be nice. > @@ -1853,14 +1853,20 @@ multi-occur > (interactive > (cons > (let* ((bufs (list (read-buffer "First buffer to search: " > - (current-buffer) t))) > + (current-buffer)))) I wonder why you removed t from the REQUIRE-MATCH arg of read-buffer? This allows the user to enter an non-existent buffer name. > (while (not (string-equal > - (setq buf (read-buffer (multi-occur--prompt) nil t)) > - "")) > - (cl-pushnew buf bufs) > - (setq ido-ignore-item-temp-list bufs)) > + (setq buf (read-buffer > + (multi-occur--prompt) > + nil t > + (lambda (b) > + (not (member > + (if (stringp b) b (car b)) > + ido-ignore-item-temp-list))))) Wouldn't it be more clear here to use 'bufs' instead of 'ido-ignore-item-te= mp-list'?