|
From: | Dmitry Gutov |
Subject: | bug#63648: 29.0.90; project.el: with switch-use-entire-map, switch-project errors on non-project commands |
Date: | Mon, 18 Sep 2023 16:56:58 +0300 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 |
On 18/09/2023 14:00, Dmitry Gutov wrote:
On 18/09/2023 09:51, Juri Linkov wrote:All right, so we also want to support non-project commands. And you wanted'C-x p p C-x v L' to see a vc log in another project, and 'C-x p p C-x v d' to open vc-dir, etc.to use a common approach for both.What if we handle them differently, though? For "project" commands (those that internally call project-current) we can set one variable, and for therest -- alter default-directory. Then restore the previous value in post-command. The detection of "project commands" could work like this: - Is it in one of the special maps? E.g. in project-prefix-map. Or maybe it's in project-switch-commands. - Does the function name start with 'project-'? - Finally, for user-defined commands we could also introduce a property 'project-command-p', although the distinction between using project-current-directory-override vs default-directory will not beimportant for every such command, so maybe being this thorough is not tooimportant.Sorry, I don't understand how 'C-x p p' could read the user's mind whether the user afterwards will type a key for a project command or a non-project command? And depending on user's intention will either set project-current-directory-override or default-directory.Ah, I forgot that in the general case we don't read the sequence, find the command and do the thing. We leave the event loop up to Emacs.What about pre-command-hook? this-command will already be set by then.
And we should consider whether other-project-prefix should entirely subsume project-switch-project. Or they should remain separate commands.
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?
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.
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.
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.
[Prev in Thread] | Current Thread | [Next in Thread] |