From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Newsgroups: gmane.emacs.bugs Subject: bug#43120: 28.0.50; fido-mode: M-j before completions appear selects wrong choice Date: Wed, 09 Sep 2020 23:08:44 +0100 Message-ID: <87ft7qvc0j.fsf@gmail.com> References: <8736433l4c.fsf@iris.silentflame.com> <87o8mpd1fw.fsf@gnus.org> <87tuwewik5.fsf@iris.silentflame.com> <87zh66qoi9.fsf@gnus.org> <87pn72w7j2.fsf@iris.silentflame.com> <87eenifcgr.fsf@gnus.org> <87mu25wqdf.fsf@iris.silentflame.com> <87k0x876ls.fsf@gnus.org> <87k0x8tf1n.fsf@iris.silentflame.com> <87363w2ajd.fsf@gnus.org> <87tuwaoj6g.fsf@gmail.com> <871rjcwsmr.fsf@gmail.com> <87y2ljcaml.fsf@mail.parknet.co.jp> <87k0x2vk4n.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="30279"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: OGAWA Hirofumi , Lars Ingebrigtsen , 43120@debbugs.gnu.org, 19032@debbugs.gnu.org, Sean Whitton To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Sep 10 00:09:14 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1kG8HC-0007jR-4o for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 10 Sep 2020 00:09:14 +0200 Original-Received: from localhost ([::1]:39292 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kG8HA-0005XP-Uv for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 09 Sep 2020 18:09:12 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:49898) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kG8H0-0005Vs-Qz for bug-gnu-emacs@gnu.org; Wed, 09 Sep 2020 18:09:06 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:51704) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kG8H0-0000bs-IK for bug-gnu-emacs@gnu.org; Wed, 09 Sep 2020 18:09:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1kG8H0-0003cb-Ck for bug-gnu-emacs@gnu.org; Wed, 09 Sep 2020 18:09:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 09 Sep 2020 22:09:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 43120 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: fixed Original-Received: via spool by 43120-submit@debbugs.gnu.org id=B43120.159968933713903 (code B ref 43120); Wed, 09 Sep 2020 22:09:02 +0000 Original-Received: (at 43120) by debbugs.gnu.org; 9 Sep 2020 22:08:57 +0000 Original-Received: from localhost ([127.0.0.1]:35016 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kG8Gu-0003c6-RR for submit@debbugs.gnu.org; Wed, 09 Sep 2020 18:08:57 -0400 Original-Received: from mail-wr1-f49.google.com ([209.85.221.49]:46455) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kG8Gs-0003bm-BK; Wed, 09 Sep 2020 18:08:55 -0400 Original-Received: by mail-wr1-f49.google.com with SMTP id o5so4503357wrn.13; Wed, 09 Sep 2020 15:08:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=fpep/0va5i6An5TwJ1g+b8jJ39PgYMoTZhjtBKWWL3k=; b=J56miASGivF3W55RBxKZFoaKkLhkALBoUvNjmWcPwCW04uln/7xOrkhQY5jFmjDZXu aB4UtKf1ebhNftGxsP6z4qR8SkuwmtnKcx6UHeFObyFuA7Y69LMqodDpSc3jan31ZGPx QjmnwV9Qzx+Mvox0Fy8EWvbQyfZ9rX43KHWveGOJXlrF8MV3mQMQ4rnhH5DoBkM5e6Ga YDFFVWfZrieOd3sMKRx3HfqUlIWxpuCKptKM4TMdjbcI05CFsid5k+n+leXDMYV9t9D5 Q4t1HtbHpFTC73LUObyq+1JpqClE9QfaF10WDFfFMkpQsW+VezGDXC2dSomCQpzn/unS nDGA== 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:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=fpep/0va5i6An5TwJ1g+b8jJ39PgYMoTZhjtBKWWL3k=; b=EQ74rneNT4rc4gwWdHqKytQEIDBp1NUZfuq2J3/ycMGteYB/VQoAvRTevkI/5SfDSw nAxJ5iBrh67DrOJGfLHgRWfazNC1haQNwZManKR5+D3PHNWEtaJE8TNA30lkIKIR2RmL DPt1fwmeB4Bl+4OPUZLWj8y0aSr2LK/NLFESN03PkXRjlsVHBVQJQqPxKhtPGJ0cufu4 jQFDc1pMiXigI++I/MvFFKY198lzZW3aEkTPD7xDqzN4f3s0Ao+tW8BldpbK1H5cOY1U XXfw8RCZYVcJ3ShYfpupjSy8pmwGk6dpJerwUpk/zAbsMMheVKhHrwkpDmZhlk44m8WX +72A== X-Gm-Message-State: AOAM5302JwioUaQkdkguOzRVPKD24poeBhhfYOPR750vCRdb0bx0f188 0e/vowLTGxr141Gpvka0sxA= X-Google-Smtp-Source: ABdhPJw4SRbMW4PJACZ3Tj5b/CVXu3fy877v15qVpyJS4SqiroD52KA4fjX8Kfy0bTJ6PiZK1WqMxw== X-Received: by 2002:a5d:4d51:: with SMTP id a17mr5932815wru.248.1599689328384; Wed, 09 Sep 2020 15:08:48 -0700 (PDT) Original-Received: from krug (89-180-151-22.net.novis.pt. [89.180.151.22]) by smtp.gmail.com with ESMTPSA id g12sm5827917wro.89.2020.09.09.15.08.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Sep 2020 15:08:47 -0700 (PDT) In-Reply-To: (Stefan Monnier's message of "Wed, 09 Sep 2020 16:35:52 -0400") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:187707 Archived-At: Stefan Monnier writes: >> Alternatively (and a bit sillily), two remaps for two different commands: >> one for exit-minibuffer and one for minibuffer-complete-and-exit. > > I'd go with that, yes, > > Also, because it will handle the case where the user has added a binding > to `minibuffer-complete-and-exit` to the keymap where RET is bound to > `exit-minibuffer`. OK, how's this look? Though I'm starting to think that when require-match is nil, an icomplete user wouldn't want the new icomplete-show-matches-on-no-input behaviour anyway. But I'm not one of those. Else, if she does, doesn't it mean she wants fido-mode instead? The question is thus: remap exit-minibuffer or not? It means usually: exit with whatever has been input, which may well be the empty string. Jo=C3=A3o diff --git a/lisp/icomplete.el b/lisp/icomplete.el index 4e546807b7..6d48aa84d4 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -157,21 +157,31 @@ icomplete-post-command-hook (defvar icomplete-minibuffer-map (let ((map (make-sparse-keymap))) (define-key map [?\M-\t] 'icomplete-force-complete) - (define-key map [remap minibuffer-complete-and-exit] 'icomplete-ret) + (define-key map [remap minibuffer-complete-and-exit] 'icomplete-comple= te-and-exit) + (define-key map [remap exit-minibuffer] 'icomplete-exit) (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.") =20 -(defun icomplete-ret () - "Exit minibuffer for icomplete." - (interactive) +(defun icomplete--maybe-force (fallback) + "Helper for `icomplete-complete-and-exit' and `icomplete-exit'." (if (and icomplete-show-matches-on-no-input (car completion-all-sorted-completions) (eql (icomplete--field-end) (icomplete--field-beg))) (icomplete-force-complete-and-exit) - (minibuffer-complete-and-exit))) + (funcall fallback))) + +(defun icomplete-complete-and-exit () + "Complete, then exit minibuffer for icomplete." + (interactive) + (icomplete--maybe-force #'minibuffer-complete-and-exit)) + +(defun icomplete-exit () + "Exit minibuffer for icomplete." + (interactive) + (icomplete--maybe-force #'exit-minibuffer)) =20 (defun icomplete-force-complete-and-exit () "Complete the minibuffer with the longest possible match and exit.