From unknown Sun Aug 17 22:01:18 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#34077 <34077@debbugs.gnu.org> To: bug#34077 <34077@debbugs.gnu.org> Subject: Status: 27.0.50; icomplete, substring completion and C-x C-f misbehaving Reply-To: bug#34077 <34077@debbugs.gnu.org> Date: Mon, 18 Aug 2025 05:01:18 +0000 retitle 34077 27.0.50; icomplete, substring completion and C-x C-f misbehav= ing reassign 34077 emacs submitter 34077 Jo=C3=A3o T=C3=A1vora severity 34077 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 14 11:32:55 2019 Received: (at submit) by debbugs.gnu.org; 14 Jan 2019 16:32:55 +0000 Received: from localhost ([127.0.0.1]:59251 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gj5AV-00006c-1y for submit@debbugs.gnu.org; Mon, 14 Jan 2019 11:32:55 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49755) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gj5AT-00006Q-Lj for submit@debbugs.gnu.org; Mon, 14 Jan 2019 11:32:54 -0500 Received: from lists.gnu.org ([209.51.188.17]:32867) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gj5AO-0000h3-9k for submit@debbugs.gnu.org; Mon, 14 Jan 2019 11:32:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59956) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gj5AN-0000U6-A7 for bug-gnu-emacs@gnu.org; Mon, 14 Jan 2019 11:32:47 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=2.0 required=5.0 tests=BAYES_20,FREEMAIL_FROM, GAPPY_SUBJECT autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gj5AM-0000gG-LK for bug-gnu-emacs@gnu.org; Mon, 14 Jan 2019 11:32:47 -0500 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]:34940) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gj5AM-0000fk-En for bug-gnu-emacs@gnu.org; Mon, 14 Jan 2019 11:32:46 -0500 Received: by mail-wr1-x42b.google.com with SMTP id 96so23645849wrb.2 for ; Mon, 14 Jan 2019 08:32:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:user-agent:mime-version :content-transfer-encoding; bh=ryATk08J7Oj+xOw5Urd3dBrtbMDSjNSmDVinC28r8QQ=; b=UfNvfvJBc24obPU/DugcZVUa07e1GvpEdbl6Sd0dzZ8xUfxsr+jd9aMw2XJSATuoJ/ CbOuuVqtnrSA+Cth/zIxebvdDCXVcb+njxr3ZJPRb/CyxMDjPW3mpIJgmTfbv8IXlnmE RawJBmkix5Ah6PRX4ltKYx7KdkD8Fim+qEZ4VVqKx4pmcYxqjGtYyAADzRIDEOlo00mt soGf9t+zUXsKZYTJvYzjtztE4igS76Cn/w59oUhf4sl3HlJXFuAD1r60hL2n5W1If5+K JC8I9FX10xcYgp1Qib098RyBCMtBrWuKdtQLJ760YB+ncAdQfbYkmAAOv91RV65Srdfl VnHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:user-agent :mime-version:content-transfer-encoding; bh=ryATk08J7Oj+xOw5Urd3dBrtbMDSjNSmDVinC28r8QQ=; b=ggp+e/VE0ya/7ucAiNYGj9z7TK9DosS7kVrFCEQMIX81dZt77EOgkaYzWNr0YDMg6Y xKaAlQlw0qFWceJrP+PWvSXThg6cPtR0dELvwTatbkIN3xfBvAo0xDC44zeDFmyu2WdA bPpwuscBOdJmV9KRg5mh8OHcpwj98OGWUOacPykr8qCGrQ+VSfSjhcTT3qx0979aQ5Rh qrDtfvSS391wyE2v/7gBgqPf1VRpKeJytNvh1ezdyqyMCeN1vq9owYdhu0AyJsy+x33H a6KJW8nx96PTezii0KJmUd4ec1F+bPu1ZLcLbX1P6Jfvn00Q+Lc2y6vT5yPl7Kr0wi63 78kg== X-Gm-Message-State: AJcUukdA2SegbUlSDENvlvT5m0qaw+SLb6fMPeByh1S7R/M8+Iby+X78 i6eNjJk8WhgOxZo+zRK+GTQ= X-Google-Smtp-Source: ALg8bN4RfHSGqz2LqahtMW3n04tNYrPtoabRZ7ZGh2LYGMs59prZcX+KflINt+VwPlmONQduHlUxGA== X-Received: by 2002:adf:f848:: with SMTP id d8mr26546197wrq.178.1547483565416; Mon, 14 Jan 2019 08:32:45 -0800 (PST) Received: from GONDOMAR.yourcompany.com (mail3.siscog.pt. [195.23.29.18]) by smtp.gmail.com with ESMTPSA id q9sm103599887wrp.0.2019.01.14.08.32.44 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 14 Jan 2019 08:32:44 -0800 (PST) From: =?iso-8859-1?Q?Jo=E3o_T=E1vora?= To: bug-gnu-emacs@gnu.org Subject: 27.0.50; icomplete, substring completion and C-x C-f misbehaving Date: Mon, 14 Jan 2019 16:32:42 +0000 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (windows-nt) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable X-Antivirus: AVG (VPS 190114-0, 14-01-2019), Outbound message X-Antivirus-Status: Clean X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::42b X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Spam-Score: 2.3 (++) 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: Hi maintainers, I'm using substring completion, icomplete-mode and C-x C-f. Navigating deeper in directories using successive C-M-i's sometimes fails: Emacs -Q M-: (add-to-list 'completion-styles 'substring) M-x icomplete-mode C-x C-f p a t h / t o / e m a c s / s r c C-M-i Content analysis details: (2.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (joaotavora[at]gmail.com) 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 1.3 GAPPY_SUBJECT Subject: contains G.a.p.p.y-T.e.x.t X-Debbugs-Envelope-To: submit Cc: monnier@iro.umontreal.ca 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.3 (+) 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: Hi maintainers, I'm using substring completion, icomplete-mode and C-x C-f. Navigating deeper in directories using successive C-M-i's sometimes fails: Emacs -Q M-: (add-to-list 'completion-styles 'substring) M-x icomplete-mode C-x C-f p a t h / t o / e m a c s / s r c C-M-i Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (joaotavora[at]gmail.com) 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 1.3 GAPPY_SUBJECT Subject: contains G.a.p.p.y-T.e.x.t -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager Hi maintainers, I'm using substring completion, icomplete-mode and C-x C-f. Navigating deeper in directories using successive C-M-i's sometimes fails: =20 Emacs -Q M-: (add-to-list 'completion-styles 'substring) M-x icomplete-mode C-x C-f p a t h / t o / e m a c s / s r c C-M-i =20 Expected to see the same as if I had typed "s r c /", instead I see "{lib-src | src }". This doesn't happen all the time: in this situation it seems to have become confused by the fact that "lib-src" contains the substring "src" Jo=E3o From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 15 12:03:43 2019 Received: (at 34077) by debbugs.gnu.org; 15 Jan 2019 17:03:43 +0000 Received: from localhost ([127.0.0.1]:60319 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gjS7r-0008SR-AJ for submit@debbugs.gnu.org; Tue, 15 Jan 2019 12:03:43 -0500 Received: from mail-qt1-f175.google.com ([209.85.160.175]:40614) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gjS7l-0008SA-Rb for 34077@debbugs.gnu.org; Tue, 15 Jan 2019 12:03:39 -0500 Received: by mail-qt1-f175.google.com with SMTP id k12so3735437qtf.7 for <34077@debbugs.gnu.org>; Tue, 15 Jan 2019 09:03:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2YVCkNNRvefXdV7bCVKHq7P3e0grLHG3a2tqRxVC+eQ=; b=YdxIY0L2ra+mmNBbQRm/mI1LgwVrWId4dIQmCn4nt46wPmH1KoUMXsMPuU8M1awAwq PHSox51QJnYxqpUrMhw/z1ubC/1DNdtHWN3KBdkA088ZATm5p5gwiXxuyKqO9CV9Q64m 3vghw6quAzvaJLkFXGnw/QuX487H8Sk9Qs44V9/J+UwDJAExxunC3cx+VkYLwajal2SJ Pd8sdn+xUxK+3bC39qJJufvmdlfCFrbuLCAFaPp+xT4iDh/AIu2CUVFBdtwpdnNcQihH QpUkHwg5pLNe+h0r6QIx9tqWJx6FkMRp8UAx0sm/Eg/vBUA2jVh3U216Zba5urDl07mn g+Ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2YVCkNNRvefXdV7bCVKHq7P3e0grLHG3a2tqRxVC+eQ=; b=lD/Bt7bavHgu15Wi/L1hOq7U73hjtoyXnA2xE1ABqYmJMZP5uKotgfvszuO0jdJOVZ Mv+Jg71pVHeQfTxsyVk7Me11okTxIlDyLI5YAVcoMrOPxsinHc9w719hjrJoklZ96WpK 26Rd+zO3KIxYtWbExXeIO5xHhvqr1Z1d85UK32Z8YgeNYMU2pbxYylA9eBw442sFIXyO uSx49T7mvMvw8iUAUIsh60OMjLa5Q3JWCbm3JFU/8CNUZUCg5F0/nQPTgYV6JmY1P/0B r8DRJSZHKGkQeybX3S9CY/nEmf+qroMlohwraIFcEqqiordw4/eNHtGxNvcUJ2/n4rJO f2Rw== X-Gm-Message-State: AJcUukeGIGNGQdGDGDiyS9fQP5xnGZMMrpBNiggPZcIWRBFAtICMmY9W DaGkplPNOzrQMcj0Z/ge3kFktrzQu9QwsHzMcB7iEw== X-Google-Smtp-Source: ALg8bN46F+AwrHwaFjWD0bxcoEoIzEIdoD6pzDRMlPu94wE3H8RhOB1MejlLUa1UmWZVnd15UUpJtw5JlNSgKgR8qIQ= X-Received: by 2002:a0c:d4a7:: with SMTP id u36mr3607589qvh.38.1547571812038; Tue, 15 Jan 2019 09:03:32 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= Date: Tue, 15 Jan 2019 17:03:20 +0000 Message-ID: Subject: Re: bug#34077: 27.0.50; icomplete, substring completion and C-x C-f misbehaving To: 34077@debbugs.gnu.org Content-Type: multipart/mixed; boundary="0000000000001f1553057f8224f6" X-Spam-Score: 1.4 (+) 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: On Mon, Jan 14, 2019 at 4:43 PM João Távora wrote: > > Hi maintainers, > > I'm using substring completion, icomplete-mode and C-x C-f. Navigating > deeper in directories using successive C-M-i's s [...] Content analysis details: (1.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (joaotavora[at]gmail.com) -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [209.85.160.175 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.1 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily 1.3 GAPPY_SUBJECT Subject: contains G.a.p.p.y-T.e.x.t X-Debbugs-Envelope-To: 34077 Cc: Stefan Monnier 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.4 (/) --0000000000001f1553057f8224f6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jan 14, 2019 at 4:43 PM Jo=C3=A3o T=C3=A1vora wrote: > > Hi maintainers, > > I'm using substring completion, icomplete-mode and C-x C-f. Navigating > deeper in directories using successive C-M-i's sometimes fails: > > Emacs -Q > M-: (add-to-list 'completion-styles 'substring) > M-x icomplete-mode > C-x C-f p a t h / t o / e m a c s / > s r c C-M-i > > Expected to see the same as if I had typed "s r c /", instead I see > "{lib-src | src }". Discovered that this is by design in normal non-icomplete.el conditions, i.e. minibuffer-force-completion is supposed to cycle. However in icomplete-mode it doesn't make sense because its "prospects list" will show what appears to be subfiles of the completed directory. Crucially, sometimes they *will* be subfiles of the completed directory (and that depends on whether the user's pattern matched one or more before the forced completion, which cannot be known anymore). Attach a patch that fixes this for icomplete.el only. --=20 Jo=C3=A3o T=C3=A1vora --0000000000001f1553057f8224f6 Content-Type: application/octet-stream; name="0001-Repeated-C-M-i-doesn-t-cycle-directories-in-icomplet.patch" Content-Disposition: attachment; filename="0001-Repeated-C-M-i-doesn-t-cycle-directories-in-icomplet.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jqy0abze0 RnJvbSA4Mzc4MzNjNjZjNjM4YjNkODYzZjE0MmZmMzdlNTYzYjI3YTM2NzJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sm89QzM9QTNvPTIwVD1DMz1BMXZvcmE/PSA8 am9hb3Rhdm9yYUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMTUgSmFuIDIwMTkgMTY6NTA6NDAgKzAw MDAKU3ViamVjdDogW1BBVENIXSBSZXBlYXRlZCBDLU0taSBkb2Vzbid0IGN5Y2xlIGRpcmVjdG9y aWVzIGluIGljb21wbGV0ZS1tb2RlCgpEZXBlbmRpbmcgb24gd2V0aGVyIHRoZXJlIGlzIG9uZSBv ciBtb3JlIGRpcmVjdG9yaWVzIG1hdGNoaW5nIGEKY2VydGFpbiBwYXR0ZXJuLCB3aGVuIEMtTS1p IGNvbXBsZXRlcyB0byBhIGRpcmVjdG9yeSBuYW1lOgoKMS4gc29tZXRpbWVzIHByb3NwZWN0cyBh cmUgdXBkYXRlZCB0byB0aGUgc3ViZmlsZXMgb2YgdGhlIGNvbXBsZXRlZCBkaXJlY3RvcnkKMi4g c29tZXRpbWVzIHRoZXkgc3RheSBvbiB0aGUgcGFyZW50IGRpciwgZ2l2aW5nIHRoZSBpbXByZXNz aW9uIHRoYXQgdGhlCiAgIGRpcmVjdG9yeSBoYXMgYSBzdWJkaXJlY3Rvcnkgd2l0aCB0aGUgc2Ft ZSBuYW1lLgoKSW4gaWNvbXBsZXRlLW1vZGUsIGl0IGlzIHByZWZlcmFibGUgdG8gZG8gMSBhbHdh eXMsIHRvIGF2b2lkCmljb25zaXN0ZW5jaWVzIHdpdGggdGhlIHByZXNlbnRhdGlvbiBvZiBwcm9z cGVjdHMgaW4gdGhpcyBtb2RlLgoKKiBsaXNwL2ljb21wbGV0ZS5lbCAoaWNvbXBsZXRlLW1pbmli dWZmZXItbWFwKTogQmluZCBDLU0taSB0bwppY29tcGxldGUtZm9yY2UtY29tcGxldGUuCihpY29t cGxldGUtZm9yY2UtY29tcGxldGUpOiBOZXcgY29tbWFuZC4KCiogbGlzcC9taW5pYnVmZmVyLmVs IChtaW5pYnVmZmVyLWZvcmNlLWNvbXBsZXRlKTogQWNjZXB0IG5ldyBhcmcKRE9OVC1DWUNMRS1E SVJTLgotLS0KIGxpc3AvaWNvbXBsZXRlLmVsICB8IDEwICsrKysrLS0KIGxpc3AvbWluaWJ1ZmZl ci5lbCB8IDY5ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0K IDIgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvbGlzcC9pY29tcGxldGUuZWwgYi9saXNwL2ljb21wbGV0ZS5lbAppbmRleCBjMmNm NGZhYjU4Li5kNmY2MGE4ODIwIDEwMDY0NAotLS0gYS9saXNwL2ljb21wbGV0ZS5lbAorKysgYi9s aXNwL2ljb21wbGV0ZS5lbApAQCAtMTQ1LDEzICsxNDUsMTkgQEAgaWNvbXBsZXRlLXBvc3QtY29t bWFuZC1ob29rCiAKIChkZWZ2YXIgaWNvbXBsZXRlLW1pbmlidWZmZXItbWFwCiAgIChsZXQgKCht YXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQotICAgIChkZWZpbmUta2V5IG1hcCBbP1xNLVx0XSAn bWluaWJ1ZmZlci1mb3JjZS1jb21wbGV0ZSkKKyAgICAoZGVmaW5lLWtleSBtYXAgWz9cTS1cdF0g J2ljb21wbGV0ZS1mb3JjZS1jb21wbGV0ZSkKICAgICAoZGVmaW5lLWtleSBtYXAgWz9cQy1qXSAg J2ljb21wbGV0ZS1mb3JjZS1jb21wbGV0ZS1hbmQtZXhpdCkKICAgICAoZGVmaW5lLWtleSBtYXAg Wz9cQy0uXSAgJ2ljb21wbGV0ZS1mb3J3YXJkLWNvbXBsZXRpb25zKQogICAgIChkZWZpbmUta2V5 IG1hcCBbP1xDLSxdICAnaWNvbXBsZXRlLWJhY2t3YXJkLWNvbXBsZXRpb25zKQogICAgIG1hcCkK ICAgIktleW1hcCB1c2VkIGJ5IGBpY29tcGxldGUtbW9kZScgaW4gdGhlIG1pbmlidWZmZXIuIikK IAorKGRlZnVuIGljb21wbGV0ZS1mb3JjZS1jb21wbGV0ZSAoKQorICAiQ29tcGxldGUgdGhlIG1p bmlidWZmZXIuCitMaWtlIGBtaW5pYnVmZmVyLWZvcmNlLWNvbXBsZXRlJywgYnV0IGRvbid0IGN5 Y2xlLiIKKyAgKGludGVyYWN0aXZlKQorICAobWluaWJ1ZmZlci1mb3JjZS1jb21wbGV0ZSBuaWwg bmlsICdkb250LWN5Y2xlKSkKKwogKGRlZnVuIGljb21wbGV0ZS1mb3JjZS1jb21wbGV0ZS1hbmQt ZXhpdCAoKQogICAiQ29tcGxldGUgdGhlIG1pbmlidWZmZXIgYW5kIGV4aXQuCiBVc2UgdGhlIGZp cnN0IG9mIHRoZSBtYXRjaGVzIGlmIHRoZXJlIGFyZSBhbnkgZGlzcGxheWVkLCBhbmQgdXNlCkBA IC0zNzAsNyArMzc2LDcgQEAgaWNvbXBsZXRlLWNvbXBsZXRpb25zCiBtYXRjaGVzIGV4aXN0LiIK ICAgKGxldCogKChpZ25vcmVkLWV4dGVuc2lvbi1yZQogICAgICAgICAgIChhbmQgY29tcGxldGlv bi1pZ25vcmVkLWV4dGVuc2lvbnMKLSAgICAgICAgICAgICAgIChjb25jYXQgIlxcKD86XFxgXFwu XFwuPy9cXHwiCisgICAgICAgICAgICAgICAoY29uY2F0ICJcXCg/OlxcYFxcLlxcLi9cXHwiCiAg ICAgICAgICAgICAgICAgICAgICAgIChyZWdleHAtb3B0IGNvbXBsZXRpb24taWdub3JlZC1leHRl bnNpb25zKQogICAgICAgICAgICAgICAgICAgICAgICAiXFwpXFwnIikpKQogICAgICAgICAgKG1p bmlidWZmZXItY29tcGxldGlvbi10YWJsZSBjYW5kaWRhdGVzKQpkaWZmIC0tZ2l0IGEvbGlzcC9t aW5pYnVmZmVyLmVsIGIvbGlzcC9taW5pYnVmZmVyLmVsCmluZGV4IDU3OGZkOWFiNjMuLmM0ZWQy ZWYwMDQgMTAwNjQ0Ci0tLSBhL2xpc3AvbWluaWJ1ZmZlci5lbAorKysgYi9saXNwL21pbmlidWZm ZXIuZWwKQEAgLTEyNzIsOSArMTI3MiwxMSBAQCBtaW5pYnVmZmVyLWZvcmNlLWNvbXBsZXRlLWFu ZC1leGl0CiAgICA7OyB0ZXN0LWNvbXBsZXRpb24sIHRoZW4gd2Ugc2hvdWxkbid0IGV4aXQsIGJ1 dCB0aGF0IHNob3VsZCBiZSByYXJlLgogICAgKGxhbWJkYSAoKSAobWluaWJ1ZmZlci1tZXNzYWdl ICJJbmNvbXBsZXRlIikpKSkKIAotKGRlZnVuIG1pbmlidWZmZXItZm9yY2UtY29tcGxldGUgKCZv cHRpb25hbCBzdGFydCBlbmQpCisoZGVmdW4gbWluaWJ1ZmZlci1mb3JjZS1jb21wbGV0ZSAoJm9w dGlvbmFsIHN0YXJ0IGVuZCBkb250LWN5Y2xlLWRpcnMpCiAgICJDb21wbGV0ZSB0aGUgbWluaWJ1 ZmZlciB0byBhbiBleGFjdCBtYXRjaC4KLVJlcGVhdGVkIHVzZXMgc3RlcCB0aHJvdWdoIHRoZSBw b3NzaWJsZSBjb21wbGV0aW9ucy4iCitSZXBlYXRlZCB1c2VzIHN0ZXAgdGhyb3VnaCB0aGUgcG9z c2libGUgY29tcGxldGlvbnMsIHVubGVzcworRE9OVC1DWUNMRS1ESVJTIGlzIG5vbi1uaWwgYW5k IG1pbmlidWZmZXIgY29tcGxldGVkIHRvIGEKK2RpcmVjdG9yeSBuYW1lLiIKICAgKGludGVyYWN0 aXZlKQogICAoc2V0cSBtaW5pYnVmZmVyLXNjcm9sbC13aW5kb3cgbmlsKQogICA7OyBGSVhNRTog TmVlZCB0byBkZWFsIHdpdGggdGhlIGV4dHJhLXNpemUgaXNzdWUgaGVyZSBhcyB3ZWxsLgpAQCAt MTI4NCw3ICsxMjg2LDggQEAgbWluaWJ1ZmZlci1mb3JjZS1jb21wbGV0ZQogICAgICAgICAgKGVu ZCAob3IgZW5kIChwb2ludC1tYXgpKSkKICAgICAgICAgIDs7IChtZCAoY29tcGxldGlvbi0tZmll bGQtbWV0YWRhdGEgc3RhcnQpKQogICAgICAgICAgKGFsbCAoY29tcGxldGlvbi1hbGwtc29ydGVk LWNvbXBsZXRpb25zIHN0YXJ0IGVuZCkpCi0gICAgICAgICAoYmFzZSAoKyBzdGFydCAob3IgKGNk ciAobGFzdCBhbGwpKSAwKSkpKQorICAgICAgICAgKGJhc2UgKCsgc3RhcnQgKG9yIChjZHIgKGxh c3QgYWxsKSkgMCkpKQorICAgICAgICAgc29sZSkKICAgICAoY29uZAogICAgICAoKG5vdCAoY29u c3AgYWxsKSkKICAgICAgICAgKGNvbXBsZXRpb24tLW1lc3NhZ2UKQEAgLTEyOTcsMzQgKzEzMDAs MzggQEAgbWluaWJ1ZmZlci1mb3JjZS1jb21wbGV0ZQogICAgICAodAogICAgICAgKGNvbXBsZXRp b24tLXJlcGxhY2UgYmFzZSBlbmQgKGNhciBhbGwpKQogICAgICAgKHNldHEgZW5kICgrIGJhc2Ug KGxlbmd0aCAoY2FyIGFsbCkpKSkKLSAgICAgIChjb21wbGV0aW9uLS1kb25lIChidWZmZXItc3Vi c3RyaW5nLW5vLXByb3BlcnRpZXMgc3RhcnQgKHBvaW50KSkgJ3NvbGUpCi0gICAgICA7OyBTZXQg Y3ljbGluZyBhZnRlciBtb2RpZnlpbmcgdGhlIGJ1ZmZlciBzaW5jZSB0aGUgZmx1c2ggaG9vayBy ZXNldHMgaXQuCi0gICAgICAoc2V0cSBjb21wbGV0aW9uLWN5Y2xpbmcgdCkKLSAgICAgIChzZXRx IHRoaXMtY29tbWFuZCAnY29tcGxldGlvbi1hdC1wb2ludCkgO0ZvciBjb21wbGV0aW9uLWluLXJl Z2lvbi4KLSAgICAgIDs7IElmIGNvbXBsZXRpbmcgZmlsZSBuYW1lcywgKGNhciBhbGwpIG1heSBi ZSBhIGRpcmVjdG9yeSwgc28gd2UnZCBub3cKLSAgICAgIDs7IGhhdmUgYSBuZXcgc2V0IG9mIHBv c3NpYmxlIGNvbXBsZXRpb25zIGFuZCBtaWdodCB3YW50IHRvIHJlc2V0Ci0gICAgICA7OyBjb21w bGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMgdG8gbmlsLCBidXQgd2UgcHJlZmVyIG5vdCB0 bywKLSAgICAgIDs7IHNvIHRoYXQgcmVwZWF0ZWQgY2FsbHMgbWluaWJ1ZmZlci1mb3JjZS1jb21w bGV0ZSBzdGlsbCBjeWNsZQotICAgICAgOzsgdGhyb3VnaCB0aGUgcHJldmlvdXMgcG9zc2libGUg Y29tcGxldGlvbnMuCi0gICAgICAobGV0ICgobGFzdCAobGFzdCBhbGwpKSkKLSAgICAgICAgKHNl dGNkciBsYXN0IChjb25zIChjYXIgYWxsKSAoY2RyIGxhc3QpKSkKLSAgICAgICAgKGNvbXBsZXRp b24tLWNhY2hlLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMgc3RhcnQgZW5kIChjZHIgYWxsKSkpCi0g ICAgICA7OyBNYWtlIHN1cmUgcmVwZWF0ZWQgdXNlcyBjeWNsZSwgZXZlbiB0aG91Z2ggY29tcGxl dGlvbi0tZG9uZSBtaWdodAotICAgICAgOzsgaGF2ZSBhZGRlZCBhIHNwYWNlIG9yIHNvbWV0aGlu ZyB0aGF0IG1vdmVkIHVzIG91dHNpZGUgb2YgdGhlIGZpZWxkLgotICAgICAgOzsgKGJ1ZyMxMjIy MSkuCi0gICAgICAobGV0KiAoKHRhYmxlIG1pbmlidWZmZXItY29tcGxldGlvbi10YWJsZSkKLSAg ICAgICAgICAgICAocHJlZCBtaW5pYnVmZmVyLWNvbXBsZXRpb24tcHJlZGljYXRlKQotICAgICAg ICAgICAgIChleHRyYS1wcm9wIGNvbXBsZXRpb24tZXh0cmEtcHJvcGVydGllcykKLSAgICAgICAg ICAgICAoY21kCi0gICAgICAgICAgICAgIChsYW1iZGEgKCkgIkN5Y2xlIHRocm91Z2ggdGhlIHBv c3NpYmxlIGNvbXBsZXRpb25zLiIKLSAgICAgICAgICAgICAgICAoaW50ZXJhY3RpdmUpCi0gICAg ICAgICAgICAgICAgKGxldCAoKGNvbXBsZXRpb24tZXh0cmEtcHJvcGVydGllcyBleHRyYS1wcm9w KSkKLSAgICAgICAgICAgICAgICAgIChjb21wbGV0aW9uLWluLXJlZ2lvbiBzdGFydCAocG9pbnQp IHRhYmxlIHByZWQpKSkpKQotICAgICAgICAoc2V0LXRyYW5zaWVudC1tYXAKLSAgICAgICAgIChs ZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQotICAgICAgICAgICAoZGVmaW5lLWtleSBt YXAgW3JlbWFwIGNvbXBsZXRpb24tYXQtcG9pbnRdIGNtZCkKLSAgICAgICAgICAgKGRlZmluZS1r ZXkgbWFwICh2ZWN0b3IgbGFzdC1jb21tYW5kLWV2ZW50KSBjbWQpCi0gICAgICAgICAgIG1hcCkp KSkpKSkKKyAgICAgIChjb21wbGV0aW9uLS1kb25lCisgICAgICAgKHNldHEgc29sZSAoYnVmZmVy LXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IChwb2ludCkpKSAnc29sZSkKKyAgICAgICh1 bmxlc3MgKGFuZCBkb250LWN5Y2xlLWRpcnMKKyAgICAgICAgICAgICAgICAgICBtaW5pYnVmZmVy LWNvbXBsZXRpbmctZmlsZS1uYW1lCisgICAgICAgICAgICAgICAgICAgKGZpbGUtZGlyZWN0b3J5 LXAgc29sZSkpCisgICAgICAgIDs7IFNldCBjeWNsaW5nIGFmdGVyIG1vZGlmeWluZyB0aGUgYnVm ZmVyIHNpbmNlIHRoZSBmbHVzaCBob29rIHJlc2V0cyBpdC4KKyAgICAgICAgKHNldHEgY29tcGxl dGlvbi1jeWNsaW5nIHQpCisgICAgICAgIChzZXRxIHRoaXMtY29tbWFuZCAnY29tcGxldGlvbi1h dC1wb2ludCkgO0ZvciBjb21wbGV0aW9uLWluLXJlZ2lvbi4KKyAgICAgICAgOzsgSWYgY29tcGxl dGluZyBmaWxlIG5hbWVzLCAoY2FyIGFsbCkgbWF5IGJlIGEgZGlyZWN0b3J5LCBzbyB3ZSdkIG5v dworICAgICAgICA7OyBoYXZlIGEgbmV3IHNldCBvZiBwb3NzaWJsZSBjb21wbGV0aW9ucyBhbmQg bWlnaHQgd2FudCB0byByZXNldAorICAgICAgICA7OyBjb21wbGV0aW9uLWFsbC1zb3J0ZWQtY29t cGxldGlvbnMgdG8gbmlsLCBidXQgd2UgcHJlZmVyIG5vdCB0bywKKyAgICAgICAgOzsgc28gdGhh dCByZXBlYXRlZCBjYWxscyBtaW5pYnVmZmVyLWZvcmNlLWNvbXBsZXRlIHN0aWxsIGN5Y2xlCisg ICAgICAgIDs7IHRocm91Z2ggdGhlIHByZXZpb3VzIHBvc3NpYmxlIGNvbXBsZXRpb25zLgorICAg ICAgICAobGV0ICgobGFzdCAobGFzdCBhbGwpKSkKKyAgICAgICAgICAoc2V0Y2RyIGxhc3QgKGNv bnMgKGNhciBhbGwpIChjZHIgbGFzdCkpKQorICAgICAgICAgIChjb21wbGV0aW9uLS1jYWNoZS1h bGwtc29ydGVkLWNvbXBsZXRpb25zIHN0YXJ0IGVuZCAoY2RyIGFsbCkpKQorICAgICAgICA7OyBN YWtlIHN1cmUgcmVwZWF0ZWQgdXNlcyBjeWNsZSwgZXZlbiB0aG91Z2ggY29tcGxldGlvbi0tZG9u ZSBtaWdodAorICAgICAgICA7OyBoYXZlIGFkZGVkIGEgc3BhY2Ugb3Igc29tZXRoaW5nIHRoYXQg bW92ZWQgdXMgb3V0c2lkZSBvZiB0aGUgZmllbGQuCisgICAgICAgIDs7IChidWcjMTIyMjEpLgor ICAgICAgICAobGV0KiAoKHRhYmxlIG1pbmlidWZmZXItY29tcGxldGlvbi10YWJsZSkKKyAgICAg ICAgICAgICAgIChwcmVkIG1pbmlidWZmZXItY29tcGxldGlvbi1wcmVkaWNhdGUpCisgICAgICAg ICAgICAgICAoZXh0cmEtcHJvcCBjb21wbGV0aW9uLWV4dHJhLXByb3BlcnRpZXMpCisgICAgICAg ICAgICAgICAoY21kCisgICAgICAgICAgICAgICAgKGxhbWJkYSAoKSAiQ3ljbGUgdGhyb3VnaCB0 aGUgcG9zc2libGUgY29tcGxldGlvbnMuIgorICAgICAgICAgICAgICAgICAgKGludGVyYWN0aXZl KQorICAgICAgICAgICAgICAgICAgKGxldCAoKGNvbXBsZXRpb24tZXh0cmEtcHJvcGVydGllcyBl eHRyYS1wcm9wKSkKKyAgICAgICAgICAgICAgICAgICAgKGNvbXBsZXRpb24taW4tcmVnaW9uIHN0 YXJ0IChwb2ludCkgdGFibGUgcHJlZCkpKSkpCisgICAgICAgICAgKHNldC10cmFuc2llbnQtbWFw CisgICAgICAgICAgIChsZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQorICAgICAgICAg ICAgIChkZWZpbmUta2V5IG1hcCBbcmVtYXAgY29tcGxldGlvbi1hdC1wb2ludF0gY21kKQorICAg ICAgICAgICAgIChkZWZpbmUta2V5IG1hcCAodmVjdG9yIGxhc3QtY29tbWFuZC1ldmVudCkgY21k KQorICAgICAgICAgICAgIG1hcCkpKSkpKSkpCiAKIChkZWZ2YXIgbWluaWJ1ZmZlci1jb25maXJt LWV4aXQtY29tbWFuZHMKICAgJyhjb21wbGV0aW9uLWF0LXBvaW50IG1pbmlidWZmZXItY29tcGxl dGUKLS0gCjIuMTkuMgoK --0000000000001f1553057f8224f6-- From debbugs-submit-bounces@debbugs.gnu.org Thu Jan 17 09:02:51 2019 Received: (at 34077) by debbugs.gnu.org; 17 Jan 2019 14:02:51 +0000 Received: from localhost ([127.0.0.1]:34294 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gk8Fu-0000rY-TB for submit@debbugs.gnu.org; Thu, 17 Jan 2019 09:02:51 -0500 Received: from mail-wm1-f43.google.com ([209.85.128.43]:53049) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gk8Fs-0000rF-FO for 34077@debbugs.gnu.org; Thu, 17 Jan 2019 09:02:49 -0500 Received: by mail-wm1-f43.google.com with SMTP id m1so1182600wml.2 for <34077@debbugs.gnu.org>; Thu, 17 Jan 2019 06:02:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:in-reply-to:message-id:user-agent:mime-version; bh=QMQ5JhBwred0qg75G2PAyN1g7TKatIKVEO2klli6Tvc=; b=JfBu+u57vDhetoWhVB35F61sQ3p2wNottBBLdmVOYZFzDrPG3lxqOv0C4eg1CSZCt/ Jo+kuQuvc7+rbXqGcEmSbu3/+qlyBXDtBvWz9g/KHRWPJA4EwY4y7MZyzrBtc4ouQQ+5 taV6Z/mmA5HXfsHpRODjls+ii/fZhX4+gAX9X5z2f+uDSpKgvzO/cLV089VqAQHx90QS 9qyL1uernF3xHKtxkzloYslGgs9pjk19x3tggqXnJYn/GFSpUb5b+wr++4KOMo2T795H CQGyLTZ/W2SCGF5fp0lGzRP+vL8GTkVMUWJwtFGIRRtx9j6r/6F7R7VmhM3UQtn0VWWj yr2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:in-reply-to:message-id :user-agent:mime-version; bh=QMQ5JhBwred0qg75G2PAyN1g7TKatIKVEO2klli6Tvc=; b=HV/5lXNOb7f/daPo51sfV9MQT6eIQC8eCdyLqbpnCBGkNfiAZGO7P0DiJqPn9NF+T8 61nhZXp3uaB7fciZpf+dAUvD433uTIwj23Ox2NPtaaH11PD5TOnnauJp7GYfUkDGQt5w Khd7wW+yBhgcoGf6xheVSjI4bky7u95mgcnYdXQ89oVvkAzwgFXG93qz12T8uq+y0HdF 925XhFDmHB9PC4lXFDGd1bIsDnqL3UbYemsJtS5KWDdiaL8DdMTsgQgg1zTzM3Y5P39q N+rw3vW71QMDWe6QQ9O8GKQLP9yMW1pg4tSRrU4GGzAIxkIT3HiYZKGHRnvsvF2eAatH 1sdg== X-Gm-Message-State: AJcUuke/Aifo4N/Tj0jfrSecTYT38hHnXnObFRVAPmvhqchJlWaAjTre +fIVGd0UQ3RzlzCTD4RHZvF5vaqg X-Google-Smtp-Source: ALg8bN70CyvzTllkp/yzHm2N/KS2EglXYi/BvJF3S2hGz9iRTFonzMJOtuvTX3gcyo8GUhlDPnHWlQ== X-Received: by 2002:a1c:16c5:: with SMTP id 188mr12204059wmw.69.1547733762293; Thu, 17 Jan 2019 06:02:42 -0800 (PST) Received: from GONDOMAR.yourcompany.com (mail1.siscog.pt. [89.115.233.242]) by smtp.gmail.com with ESMTPSA id 207sm26484745wmb.12.2019.01.17.06.02.41 for <34077@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 17 Jan 2019 06:02:41 -0800 (PST) From: =?iso-8859-1?Q?Jo=E3o_T=E1vora?= To: bug#34077 <34077@debbugs.gnu.org> Subject: Re: Status: 27.0.50; icomplete, substring completion and C-x C-f misbehaving Date: Thu, 17 Jan 2019 14:02:39 +0000 In-Reply-To: bug's message of "Thu\, 17 Jan 2019 14\:00\:15 +0000" Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (windows-nt) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Antivirus: AVG (VPS 190117-0, 17-01-2019), Outbound message X-Antivirus-Status: Clean X-Spam-Score: 1.3 (+) 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: tag 34077 patch Here's a simpler patch set to fix this: From cc389a92a51dfab1707246d77d03c387b02f312d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Wed, 16 Jan 2019 23:29:34 +0000 Subject: [PATCH 1/5] Fix nasty cycling on minib [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [209.85.128.43 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.128.43 listed in wl.mailspike.net] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (joaotavora[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record 1.3 GAPPY_SUBJECT Subject: contains G.a.p.p.y-T.e.x.t 0.0 FAKE_REPLY_C No description available. X-Debbugs-Envelope-To: 34077 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.3 (/) --=-=-= Content-Type: text/plain tag 34077 patch Here's a simpler patch set to fix this: --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-Fix-nasty-cycling-on-minibuffer-force-complete-and-e.patch >From cc389a92a51dfab1707246d77d03c387b02f312d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Wed, 16 Jan 2019 23:29:34 +0000 Subject: [PATCH 1/5] Fix nasty cycling on minibuffer-force-complete-and-exit (bug#34116) minibuffer-force-complete sets up cycling after forcing the completion, which is mostly fine for successive interactive calls. However minibuffer-force-complete-and-exit also calls it. In situations where the former and latter are called in succession this causes an unwanted extra cycle, which ultimately yields the wrong completion. * lisp/minibuffer.el (minibuffer-force-complete): Take DONT-CYCLE arg. (minibuffer-force-complete-and-exit): Pass DONT-CYCLE to minibuffer-force-complete. --- lisp/minibuffer.el | 79 +++++++++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 32 deletions(-) diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 5760a2e49d..74f85e7b90 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -1257,29 +1257,32 @@ completion-all-sorted-completions (defun minibuffer-force-complete-and-exit () "Complete the minibuffer with first of the matches and exit." (interactive) - (minibuffer-force-complete) + (minibuffer-force-complete nil nil t) (completion--complete-and-exit (minibuffer-prompt-end) (point-max) #'exit-minibuffer ;; If the previous completion completed to an element which fails ;; test-completion, then we shouldn't exit, but that should be rare. (lambda () (minibuffer-message "Incomplete")))) -(defun minibuffer-force-complete (&optional start end) - "Complete the minibuffer to an exact match. -Repeated uses step through the possible completions." +(defun minibuffer-force-complete (&optional start end dont-cycle) + "Complete the minibuffer string between START and END to an exact match. +Repeated uses step through the possible completions, unless +prevented to do so by DONT-CYCLE." (interactive) (setq minibuffer-scroll-window nil) ;; FIXME: Need to deal with the extra-size issue here as well. ;; FIXME: ~/src/emacs/t/lisp/minibuffer.el completes to ;; ~/src/emacs/trunk/ and throws away lisp/minibuffer.el. + ;; FIXME: shouldn't we cycle _before_ instead of after forcing?? (let* ((start (copy-marker (or start (minibuffer-prompt-end)))) (end (or end (point-max))) ;; (md (completion--field-metadata start)) (all (completion-all-sorted-completions start end)) - (base (+ start (or (cdr (last all)) 0)))) + (base (+ start (or (cdr (last all)) 0))) + last second-last) (cond ((not (consp all)) - (completion--message + (completion--message (if all "No more completions" "No completions"))) ((not (consp (cdr all))) (let ((done (equal (car all) (buffer-substring-no-properties base end)))) @@ -1287,36 +1290,48 @@ minibuffer-force-complete (completion--done (buffer-substring-no-properties start (point)) 'finished (when done "Sole completion")))) (t + (setq second-last (last all 2) + last (cdr second-last)) + ;; If we happened to be already cycling, we must undo the + ;; effects of the last rotation (get out yer' pen and paper to + ;; get the cons cell math). + (when (and dont-cycle completion-cycling) + (let ((lastcdr (cddr second-last))) + (setcdr (cdr second-last) all) + (setq all (cdr second-last)) + (setcdr second-last lastcdr) + (setq last second-last))) (completion--replace base end (car all)) (setq end (+ base (length (car all)))) (completion--done (buffer-substring-no-properties start (point)) 'sole) - ;; Set cycling after modifying the buffer since the flush hook resets it. - (setq completion-cycling t) - (setq this-command 'completion-at-point) ;For completion-in-region. - ;; If completing file names, (car all) may be a directory, so we'd now - ;; have a new set of possible completions and might want to reset - ;; completion-all-sorted-completions to nil, but we prefer not to, - ;; so that repeated calls minibuffer-force-complete still cycle - ;; through the previous possible completions. - (let ((last (last all))) + (unless dont-cycle + ;; Set cycling after modifying the buffer since the flush hook resets it. + (setq completion-cycling t) + (setq this-command 'completion-at-point) ;For completion-in-region. + ;; Rotate the completions collected earlier and cache them. If + ;; completing file names, (car all) may be a directory, so we'd + ;; now have a new set of possible completions and might want to + ;; reset completion-all-sorted-completions to nil, but we prefer + ;; not to, so that repeated calls minibuffer-force-complete + ;; still cycle through the previous possible completions. (setcdr last (cons (car all) (cdr last))) - (completion--cache-all-sorted-completions start end (cdr all))) - ;; Make sure repeated uses cycle, even though completion--done might - ;; have added a space or something that moved us outside of the field. - ;; (bug#12221). - (let* ((table minibuffer-completion-table) - (pred minibuffer-completion-predicate) - (extra-prop completion-extra-properties) - (cmd - (lambda () "Cycle through the possible completions." - (interactive) - (let ((completion-extra-properties extra-prop)) - (completion-in-region start (point) table pred))))) - (set-transient-map - (let ((map (make-sparse-keymap))) - (define-key map [remap completion-at-point] cmd) - (define-key map (vector last-command-event) cmd) - map))))))) + (completion--cache-all-sorted-completions start end (cdr all)) + ;; Make sure repeated uses cycle, even though completion--done + ;; might have added a space or something that moved us outside + ;; of the field. (bug#12221). + (let* ((table minibuffer-completion-table) + (pred minibuffer-completion-predicate) + (extra-prop completion-extra-properties) + (cmd + (lambda () "Cycle through the possible completions." + (interactive) + (let ((completion-extra-properties extra-prop)) + (completion-in-region start (point) table pred))))) + (set-transient-map + (let ((map (make-sparse-keymap))) + (define-key map [remap completion-at-point] cmd) + (define-key map (vector last-command-event) cmd) + map)))))))) (defvar minibuffer-confirm-exit-commands '(completion-at-point minibuffer-complete -- 2.19.2 --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0005-Avoid-broken-C-M-i-cycling-in-icomplete-mode-bug-340.patch >From f5538c8febc5f28ef08e30fe98b8b91c8fe1e525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Tue, 15 Jan 2019 16:50:40 +0000 Subject: [PATCH 5/5] Avoid broken C-M-i cycling in icomplete-mode (bug#34077) If there is only one propective candidate and it happens to be a directory then (1) C-M-i causes the prospects to be updated to the subfiles of the completed directory, otherwise (2) the prospects are merely rotated. It is very hard to tell if (1) or (2) happened because the rotated prospects may look identical to the updated prospects. Therefore, in icomplete-mode, it is preferable to do (1) always, to avoid iconsistencies with the presentation of prospects in this mode. There are already facilities in place to rotate the prospects list. * lisp/icomplete.el (icomplete-minibuffer-map): Bind C-M-i to icomplete-force-complete. (icomplete-force-complete): New command. --- lisp/icomplete.el | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lisp/icomplete.el b/lisp/icomplete.el index 6d77c0649a..80357af4ad 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -145,13 +145,25 @@ icomplete-post-command-hook (defvar icomplete-minibuffer-map (let ((map (make-sparse-keymap))) - (define-key map [?\M-\t] 'minibuffer-force-complete) + (define-key map [?\M-\t] 'icomplete-force-complete) (define-key map [?\C-j] 'icomplete-force-complete-and-exit) (define-key map [?\C-.] 'icomplete-forward-completions) (define-key map [?\C-,] 'icomplete-backward-completions) map) "Keymap used by `icomplete-mode' in the minibuffer.") +(defun icomplete-force-complete () + "Complete the minibuffer. +Like `minibuffer-force-complete', but don't cycle." + (interactive) + ;; FIXME: it _could_ make sense to cycle in certain situations, by + ;; analyzing the current thing and the thing to cycle to for + ;; instance. Unfortunately that can't be done until a _very nasty + ;; hack_ in `minibuffer-force-complete' is removed. That hack uses + ;; transient maps and prevents two consecutive calls to + ;; `icomplete-force-complete'. + (minibuffer-force-complete nil nil t)) + (defun icomplete-force-complete-and-exit () "Complete the minibuffer and exit. Use the first of the matches if there are any displayed, and use -- 2.19.2 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 23 11:36:29 2019 Received: (at 34077) by debbugs.gnu.org; 23 Jan 2019 16:36:29 +0000 Received: from localhost ([127.0.0.1]:42994 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gmLVt-0004v3-3l for submit@debbugs.gnu.org; Wed, 23 Jan 2019 11:36:29 -0500 Received: from mail-qt1-f182.google.com ([209.85.160.182]:33392) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gmLVo-0004uJ-PU; Wed, 23 Jan 2019 11:36:25 -0500 Received: by mail-qt1-f182.google.com with SMTP id l11so3096323qtp.0; Wed, 23 Jan 2019 08:36:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=0m4/Retqoqrbx+KIjNQy3/qp1kCArgII3M356X6l79M=; b=T3riDgv3hHuvneMEf915AdZR0GDPNxbizsGQEHYCT1VartGvH+JA/45NZPIob/qK8n 247FiFgV0/wuuJnED6/41uZiabdeOb9EYfhsBIzJImcZmwHjPA/P4w4+/WLQHs63l9wX sreh596dtSE6yQ9fPGaKKE2dz6XJh+w1akdemIWhxZ9aUdNivZ62ITvuAcwfp6LbIbTl 67ufP5FhKS93ReJmOTPJdExuAuVBkKurIxpKL3n2dMU0tuh7mHea0PE+sgdWQ9HCPWv7 Gyw4AdeLmVajpDdSLQLKZPogiacpysRqZ4Hg8Ah/RfIrRQSTtjgRm8VIH8FX+qkol/xt UCeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=0m4/Retqoqrbx+KIjNQy3/qp1kCArgII3M356X6l79M=; b=DeYCdSrjl//uRe1xe9/t/jgP2Z0jiYukIKEdMAmxu7QsOO1Gzoa2XPehl/ZTDxjCEJ KhDo09XkdQW5OOemV7GOBqP25hp9zPsdKy4f8Nw6+/WyD+LeAyFMwcU+u30gUh6zoVLL ngTCOEH7LSzJjCMemP2zpOYmHCARdARX+/AmmFnsl4SWu6wjV7TAC+TQIMPD/YAsAczJ M23qwOAQkWPoTr5UP3OAkx+5QIenW320Vv2vflZc0takwOSCjQw/I4pD/n4nViv3aRsV pJJ21fJwq1mj8qOQKBYooTuTk+9Xr90DiUpmR6uUzyf5voHxDMQz+Qkkth98oJZGZR53 RGBg== X-Gm-Message-State: AJcUukfuN0Tf+t8WZ2MbAGZ75yo3oIfGBSkVB7T6KD5bfCkM1IreMNgx 6FNOZZI6pO77EsF6smWLFv438K6OeoZkkp4axsQ= X-Google-Smtp-Source: ALg8bN6kZQn0Fa+Ks/TnGQvKKMACeZXLh6jyBqGrjif2c67CdbLHJgm+g0BpnPah6kxkfROh5fX3p0foKlaCIgGlBas= X-Received: by 2002:ac8:3790:: with SMTP id d16mr3085670qtc.20.1548261379042; Wed, 23 Jan 2019 08:36:19 -0800 (PST) MIME-Version: 1.0 References: <87tvi5pq35.fsf@gmail.com> In-Reply-To: From: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= Date: Wed, 23 Jan 2019 16:36:07 +0000 Message-ID: Subject: Re: bug#34116: 27.0.50; minibuffer-force-complete-and-exit mostly broken To: Stefan Monnier Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 34077 Cc: 34116@debbugs.gnu.org, 34116-done@debbugs.gnu.org, bug#34077 <34077@debbugs.gnu.org>, 34077-done@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.9 (/) On Wed, Jan 23, 2019 at 4:09 PM Stefan Monnier w= rote: > > > But what about this which solves both problems bug#34077 > > and bug#34116? > > LGTM, > Stefan Great! commit b9add0a5a7eddcf80a189c478b39a5cb7a12befe (HEAD -> master, origin/master, origin/HEAD) Author: Jo=C3=A3o T=C3=A1vora Date: Wed Jan 23 16:30:41 2019 +0000 Force completion in icomplete with C-M-i, but don't cycle (bug#34077) Cycling after forcing a completion with C-M-i in icomplete can be confusing, as it leaves rotated prospects in the minibuffer. In C-x C-f, for example it is very difficult to understand if the prospects refer to subdirectories of the directory being completed to, which happens naturally when the completion is unique; or if they are a cycled version of prospects that match the new completion pattern, in case the completion happens to still match other items. To resolve this confusion, never cycle with C-M-i in icomplete: non-ambiguous cycling can be achieved with C-. and C-, The former behaviour can still be restored with: (define-key icomplete-minibuffer-map (kbd "C-M-i") 'minibuffer-force-complete) * lisp/icomplete.el (icomplete-force-complete): New command. (icomplete-minibuffer-map): Bind C-M-i to icomplete-force-complete. commit 210e592e55ade154c8d58bd467711fb69368f6cb Author: Jo=C3=A3o T=C3=A1vora Date: Wed Jan 23 16:17:03 2019 +0000 Avoid cycling in minibuffer-force-complete-and-exit (bug#34116) * lisp/minibuffer.el (minibuffer-force-complete-and-exit): Check completion-cycling before minibuffer-force-complete. From unknown Sun Aug 17 22:01:18 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 21 Feb 2019 12:24:05 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator