From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.devel Subject: Re: master ce4ec17: Fix display-buffer-override-next-command to call action only once (bug#39722) Date: Wed, 24 Jun 2020 02:45:19 +0300 Organization: LINKOV.NET Message-ID: <87zh8txsdc.fsf@mail.linkov.net> References: <20200621233622.23590.68753@vcs0.savannah.gnu.org> <20200621233623.C811520A26@vcs0.savannah.gnu.org> <87lfkgj5tk.fsf@mail.linkov.net> <874kr24p5l.fsf@mail.linkov.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="101331"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (x86_64-pc-linux-gnu) Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Jun 24 02:05:45 2020 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 1jnsvB-000QHX-5W for ged-emacs-devel@m.gmane-mx.org; Wed, 24 Jun 2020 02:05:45 +0200 Original-Received: from localhost ([::1]:50152 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jnsvA-0003PO-7G for ged-emacs-devel@m.gmane-mx.org; Tue, 23 Jun 2020 20:05:44 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:34318) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jnsu3-0002bL-0p for emacs-devel@gnu.org; Tue, 23 Jun 2020 20:04:35 -0400 Original-Received: from relay11.mail.gandi.net ([217.70.178.231]:45307) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jnsu0-0008Mq-JT for emacs-devel@gnu.org; Tue, 23 Jun 2020 20:04:34 -0400 Original-Received: from mail.gandi.net (m91-129-108-6.cust.tele2.ee [91.129.108.6]) (Authenticated sender: juri@linkov.net) by relay11.mail.gandi.net (Postfix) with ESMTPSA id 5D443100008; Wed, 24 Jun 2020 00:04:26 +0000 (UTC) In-Reply-To: (Stefan Monnier's message of "Tue, 23 Jun 2020 00:09:06 -0400") Received-SPF: pass client-ip=217.70.178.231; envelope-from=juri@linkov.net; helo=relay11.mail.gandi.net X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/23 20:04:28 X-ACL-Warn: Detected OS = Linux 3.11 and newer X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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" Xref: news.gmane.io gmane.emacs.devel:252525 Archived-At: >>> I'm not sure how. I think `C-x 4 4` followed by `C-u` will work thanks >>> to the (eq this-command command) check (because >>> `prefix-command-preserve-state` does (setq this-command last-command)), >>> but I don't think the reverse will work. >> Could you give an example of a key sequence where this might not work? > > `C-u C-x 5 5 C-x =` won't display the extra info requested by the `C-u`. > > You can still get it with `C-x 5 5 C-u C-x =`, but the user shouldn't > have to remember in which order prefix commands need to be entered. The feature was intentionally designed this way for several reasons: 1. it should be easier for the users to build the key sequence when the prefix is in front of the main command key sequence, not before the command that requests a new window/frame; 2. to allow adding arguments to the commands `C-x 4 4` and `C-x 5 5`. The design was based on the existing command `windmove-display-in-direction` where the prefix arg can be given to not select the displayed window. Similarly, the prefix arg could be added to `C-x 4 4` and `C-x 5 5` to request displaying the buffer in another window/frame, but not to select the displayed window. Then `C-u C-x 5 5 C-u C-x =` will display the Help buffer in another frame without selecting it. >> display-buffer-overriding-action has exactly the same format as >> display-buffer-fallback-action, and display-buffer-fallback-action >> holds a list of actions: >> >> (defconst display-buffer-fallback-action >> '((display-buffer--maybe-same-window ;FIXME: why isn't this redundant? >> display-buffer-reuse-window >> display-buffer--maybe-pop-up-frame-or-window >> display-buffer-in-previous-window >> display-buffer-use-some-window >> ;; If all else fails, pop up a new frame. >> display-buffer-pop-up-frame)) > > Look again! This is not a list of functions: it's a cons cell whose car > is a list of functions. It seems currently it works because no other code tries to modify display-buffer-overriding-action, but really functions should be added to the car of display-buffer-overriding-action, or maybe even better not to add but replace display-buffer-overriding-action with own value. >> Incidentally, the echo area feedback and the extra transient keymap >> is exactly what is currently discussed for project-switch-project >> where `C-x p p` displays a short menu in the echo area and reads keys >> to run commands from the project.el prefix keymap. > > I was referring to the each area info also displayed by `C-u`, via > `prefix-command-echo-keystrokes-functions`. Nothing fancy like a menu: > just a brief mention to reflect the fact that a prefix command is "about > to be applied". Currently `C-x 5 5` just displays the message before the next command: "Display next command buffer in a new frame..." but using `prefix-command-echo-keystrokes-functions` it could display "[other-frame]" like other-frame-window does for every following key press.