From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Lars Ingebrigtsen Newsgroups: gmane.emacs.bugs Subject: bug#19032: 24.4; icomplete cannot select matches with C-x b with no input Date: Thu, 13 Aug 2020 11:34:22 +0200 Message-ID: <874kp6hotd.fsf@gnus.org> References: <8761egqcyr.fsf@matt-desktop.home> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35138"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: Ole Laursen , Stefan Monnier , 19032@debbugs.gnu.org To: Matthew Leach Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Aug 13 11:35:09 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 1k69dd-0008z2-OC for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 13 Aug 2020 11:35:09 +0200 Original-Received: from localhost ([::1]:47202 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k69dc-0005Wl-MS for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 13 Aug 2020 05:35:08 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:38036) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k69dW-0005WF-4A for bug-gnu-emacs@gnu.org; Thu, 13 Aug 2020 05:35:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:35372) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1k69dV-0008Cn-QF for bug-gnu-emacs@gnu.org; Thu, 13 Aug 2020 05:35:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1k69dV-0007j6-Kb for bug-gnu-emacs@gnu.org; Thu, 13 Aug 2020 05:35:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 13 Aug 2020 09:35:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 19032 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 19032-submit@debbugs.gnu.org id=B19032.159731128129664 (code B ref 19032); Thu, 13 Aug 2020 09:35:01 +0000 Original-Received: (at 19032) by debbugs.gnu.org; 13 Aug 2020 09:34:41 +0000 Original-Received: from localhost ([127.0.0.1]:46918 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k69dA-0007iN-SZ for submit@debbugs.gnu.org; Thu, 13 Aug 2020 05:34:41 -0400 Original-Received: from quimby.gnus.org ([95.216.78.240]:55004) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k69d6-0007i6-5m for 19032@debbugs.gnu.org; Thu, 13 Aug 2020 05:34:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=fVm2BaWnqz2Hey7UxeLsJ27MS4OSQw9RWRgWY0VwF5c=; b=q3TcXnUSYaqdkTYdhMl5ISro3e gN2dLmDF72TW8Fds+R8X+hEhyTy4bx3+BlAbtw5F3o6TIXgKzAgiKSqGivRO8bX5FO6rCk9SnWho+ Dc2IUxDyCjwvTDrrWpAEpjvRrTuOC8hZ9HzbYmczm36yaW5z+4EDuMKjBENSFE4bLjR8=; Original-Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=xo) by quimby with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1k69cv-0004Vg-4g; Thu, 13 Aug 2020 11:34:29 +0200 In-Reply-To: <8761egqcyr.fsf@matt-desktop.home> (Matthew Leach's message of "Sat, 15 Nov 2014 23:08:12 +0000") 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:184973 Archived-At: Matthew Leach writes: >> Run emacs -Q, evaluate >> >> (icomplete-mode 1) >> (setq icomplete-show-matches-on-no-input t) >> >> Make sure you have three buffers, e.g. by finding three files. Then >> hit C-x b which should immediately show all buffers and use C-. or C-, >> to select any other buffer than what the modeline declares to be the >> default, and hit C-j or RET. >> >> Emacs then switches to the default buffer instead of the selected buffer. > > I'm not sure if this is expected behaviour, since the "default" prompt > in the minibuffer doesn't disappear when cycling through results. > Nevertheless attached is a patch that fixes this. I've respun the patch for Emacs 28, and I think the new behaviour makes a lot more sense than the old behaviour, which I couldn't understand the point of at all. But I'm not an icomplete user, so perhaps the old behaviour is what people want? This also has possible ramifications for other completion styles (although only icomplete enables it with this patch), so I wonder whether Stefan has any comments here? diff --git a/lisp/icomplete.el b/lisp/icomplete.el index 3747ae3d28..e3f7043e2c 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -432,6 +432,8 @@ icomplete-minibuffer-setup (current-local-map))) (add-hook 'pre-command-hook #'icomplete-pre-command-hook nil t) (add-hook 'post-command-hook #'icomplete-post-command-hook nil t) + (when icomplete-show-matches-on-no-input + (setq-local completion-use-stored-completions-when-no-input t)) (run-hooks 'icomplete-minibuffer-setup-hook))) (defvar icomplete--in-region-buffer nil) diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index d2c3f9045e..c3e5440956 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -1126,6 +1126,7 @@ completion--cycle-threshold (defvar-local completion-all-sorted-completions nil) (defvar-local completion--all-sorted-completions-location nil) (defvar completion-cycling nil) ;Function that takes down the cycling map. +(defvar completion-use-stored-completions-when-no-input nil) (defvar completion-fail-discreetly nil "If non-nil, stay quiet when there is no match.") @@ -1510,8 +1511,15 @@ completion--complete-and-exit COMPLETION-FUNCTION is called if the current buffer's content does not appear to be a match." (cond - ;; Allow user to specify null string - ((= beg end) (funcall exit-function)) + ;; Allow user to specify null string. In the case that + ;; `completion-use-stored-completions-when-no-input' is t, use + ;; the car of `completion-all-sorted-completions' as the + ;; candidate. + ((= beg end) + (when completion-use-stored-completions-when-no-input + (completion--replace beg end (car completion-all-sorted-completions))) + (funcall exit-function)) + ((test-completion (buffer-substring beg end) minibuffer-completion-table minibuffer-completion-predicate) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no