Subject: Re: bug#63648: 29.0.90; project.el: with switch-use-entire-map, switch-project errors on non-project commands

From: Juri Linkov <[email-masked]>
Date: Sat, 28 Oct 2023 19:56:08 +0300

>>>>> +         ;; Variation: could be a separate command, or an option.
>>>>> +         ;; (command (let ((overriding-local-map project-prefix-map))
>>>>> +         ;;            (key-binding (read-key-sequence
>>>>> +         ;;                          (format "[execute in %s]:" (project-root pr)))
>>>>> +         ;;                         t)))
>>>> Thanks, it works nicely.
>>>> Any reason not to use this by default?
>>>
>>> Nothing critical, but it might not fit the expectations without additional
>>> instructions in the prompt, or it can be unnecessary if the user had
>>> reached this command through 'C-x p o'.
>> Indeed, this is needed only for 'C-x p p' that supports the global map.
>> 
>>> In the latter case there is also a small chance that the user had set up
>>> some advanced sub-maps inside project-prefix-map which would shadow some
>>> global bindings. So maybe a separate command is best. Please see how you
>>> like the attached new version together with
>>>
>>>    (setq project-switch-commands #'project-prefix-or-any-command)
>> A separate command that is not used anywhere looks strange.
>> Why not a simple option like 'project-switch-use-entire-map'?
>
> You would still need to change project-switch-commands, right? Or what
> would the option be called?

I expected 'project-switch-use-global-map' to be used
by 'project--switch-project-command' without the need
to customize 'project-switch-commands'.

>>> I'm not sure about project-prefix-or-any-command's prompt, though (phrasing
>>> feels awkward). Improvements welcome.
>> I'm not a fan of the long prompt especially that wraps to the second
>> line.
>
> It didn't wrap for me.

Because the length depends on the deepness of the project root.

> But if it's too long, how would you like it changed?
> Remove everything? Just keep [executing in ...]?

I'd prefer keeping only [executing in ...] because it's useful
to confirm in which directory the command will be executed.
But all available keys are usually useless except in such modes
as help-quick for novices.