From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.bugs Subject: bug#63648: 29.0.90; project.el: with switch-use-entire-map, switch-project errors on non-project commands Date: Wed, 20 Sep 2023 20:10:46 +0300 Organization: LINKOV.NET Message-ID: <86edishisp.fsf@mail.linkov.net> References: <86msyhwrrg.fsf@mail.linkov.net> <86y1hs4kkg.fsf@mail.linkov.net> <86h6of66o3.fsf@mail.linkov.net> <86wmxb2qvh.fsf@mail.linkov.net> <8634zyjt0k.fsf@mail.linkov.net> <8d1fb7ac-5c82-0ec2-8ae2-d09c131ec165@gutov.dev> <86edj6hyem.fsf@mail.linkov.net> <8634zitwoy.fsf@mail.linkov.net> <50d46d30-a796-b855-0d4c-690d6cb3d15b@gutov.dev> <86il88x9cy.fsf@mail.linkov.net> <4367c45c-95b3-6a29-4ba3-068a3c748452@gutov.dev> <2e34e515-a921-a969-0915-bea94c745f8b@gutov.dev> <868r9258oi.fsf@mail.linkov.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="32074"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) Cc: Spencer Baugh , 63648@debbugs.gnu.org, sbaugh@catern.com To: Dmitry Gutov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Sep 20 19:14:13 2023 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 1qj0mD-0008Fv-Lj for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 20 Sep 2023 19:14:13 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qj0lt-0008GL-Lj; Wed, 20 Sep 2023 13:13:53 -0400 Original-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 1qj0ls-0008GD-At for bug-gnu-emacs@gnu.org; Wed, 20 Sep 2023 13:13:52 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qj0ls-0006Du-2I for bug-gnu-emacs@gnu.org; Wed, 20 Sep 2023 13:13:52 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qj0m1-0005EK-Hf for bug-gnu-emacs@gnu.org; Wed, 20 Sep 2023 13:14:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Sep 2023 17:14:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63648 X-GNU-PR-Package: emacs Original-Received: via spool by 63648-submit@debbugs.gnu.org id=B63648.169522999020031 (code B ref 63648); Wed, 20 Sep 2023 17:14:01 +0000 Original-Received: (at 63648) by debbugs.gnu.org; 20 Sep 2023 17:13:10 +0000 Original-Received: from localhost ([127.0.0.1]:60296 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qj0lB-0005D1-Su for submit@debbugs.gnu.org; Wed, 20 Sep 2023 13:13:10 -0400 Original-Received: from relay1-d.mail.gandi.net ([2001:4b98:dc4:8::221]:49013) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qj0l7-0005CT-P2 for 63648@debbugs.gnu.org; Wed, 20 Sep 2023 13:13:07 -0400 Original-Received: by mail.gandi.net (Postfix) with ESMTPSA id BC33C240004; Wed, 20 Sep 2023 17:12:47 +0000 (UTC) In-Reply-To: (Dmitry Gutov's message of "Wed, 20 Sep 2023 03:39:08 +0300") X-GND-Sasl: juri@linkov.net 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-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:270940 Archived-At: >>> And we should consider whether other-project-prefix should entirely subsume >>> project-switch-project. Or they should remain separate commands. >> We could leave project-switch-project unobsoleted indefinitely >> for users who might prefer it, and users can bind it to C-x p p. > > Or we keep the easier-to-use command on 'C-x p p', and the more experienced > users would rebind that to 'other-project-prefix', when they learn how to > use it. Or vice versa. >>> E.g. would people who customized project-switch-commands to a symbol be >>> okay with not being able to use the other functionality of >>> other-project-prefix? >> Symbolic project-switch-commands is supported by other-project-prefix. > > Yes, and that could be a problem: if I as a user want 'C-x p p' to always > run 'project-find-file', for example (in the other project), but I also > want to be able to sometimes call 'M-x other-project-prefix' (or use > a custom binding) to run an arbitrary command in the other project. With other-project-prefix, users can run 'project-find-file' in another project with just: ``` (defun other-project-find-file () (interactive) (call-interactively 'other-project-prefix) (call-interactively 'project-find-file)) ``` >>> Or what about the variable project-switch-use-entire-map? I'm not sure >>> about dropping it, at least without notifying about that in the UI somehow. >> project-switch-use-entire-map could be handled in other-project-prefix. >> But is this really needed? I can't imagine why anyone might want >> to disable keys from project-prefix-map. > > I think if project-switch-use-entire-map is still wanted, we should just > keep these commands separate (the same logic as in the previous paragraph). No problem, project-switch-use-entire-map can be easily supported in other-project-prefix. > Why not remove that option? Consider the current UI (which looks almost the > same in your latest patch): user types 'C-x p p', chooses the project and > then sees the prompt which only offers the options from > project-switch-commands. They are not informed that any other keys could be > used too. So if we were to change the default behavior, I think this > UI/prompt needs to change, at the very least. Agreed, a better prompt needed. Maybe with the standard C-h key for help. > Do we want to drop the whole "choose a command from the list" thing? Will > that be an improvement overall, for most users? If you think so, I suppose > we should make a poll somewhere. Maybe this short menu is not much needed. OTOH, it doesn't cause distraction. >>> Finally, the current patch drops the loop, so if the user types the wrong >>> key, they will need to repeat the command and choose the project again. >> Indeed, the loop now is the command loop, and maybe it's possible to >> write a hack to set a catch-all in set-transient-map that is not >> finished until a key in the map is typed. But as with any command, >> if the user types a wrong key sequence, then need to type it again. >> I do this all the time with mistakenly typed keys. I don't see why >> project keys are the exception. > > Maybe because in the middle of it all you have interacted with Emacs to > choose the other project, and that can be a significant amount of typing? Then for repeating the previously selected project it will be in the history: 'C-x p p M-p'. > I suppose, if it worked the other way (first choose the command, and then > the project), it would make more sense to not care about having the user > repeat the command sequence. Like it does when typed e.g. 'C-x p f' in a non-project directory? >>> So perhaps the simplest incremental change is to add other-project-prefix >>> which will work with "regular" commands and keep project-switch-project for >>> project commands (whether it will support "project" commands as well, can >>> be optional). >>> >>> The downside is that it will require a different key binding (or for the >>> user to redefine the current one), so I'm open to discussing all the >>> questions above. >> A different key binding for the commands that do the same thing? >> Only because the new command uses the command loop? > > project-switch-project would continue to show the menu with commands, only > work with them by default, and obey project-switch-use-entire-map, which, > when set to t, would enable other commands from the project keymap, but > only them. All accessible via one character binding. And when > project-switch-commands is set to a symbol, it would only invoke that one > command without additional prompting. > > other-project-prefix would accept all commands but require full key > sequence for the invoked command. And also other-project-prefix will fix such bugs as bug#65558. > Would it add shortcuts to the commands from the project keymap? > Possibly. Any ideas how to inform the user about that? By a different prompt?