On 21/10/2023 16:27, sbaugh@catern.com wrote: > Dmitry Gutov writes: >> Hi Juri, >> >> On 22/09/2023 18:52, Juri Linkov wrote: >>>>> Probably. Would you like to propose one? So that I have something to >>>>> compare to, and have something specific to put to the vote as well. >>>> >>>> Ok, something like this: >>> Here is a more tested patch. It supports these cases: >>> (setq project-switch-use-entire-map t) >>> C-x p p C-b - should not include current buffer in the list of >>> another project (bug#58784) >>> C-x p p f M-n - should fetch the right default file name (bug#58784, bug#63829) >>> C-u C-x p p f emoji TAB - should include ignored emoji-labels.el (bug#63648) >>> C-x p p C-x d - should visit another project's root (bug#63648) >>> The same with frames: >>> C-x 5 p p C-b >>> C-x 5 p p f M-n >>> C-u C-x 5 p p f emoji TAB - should not show completions in another frame (bug#65558) >>> C-x 5 p p C-x d >> >> Thank you. Especially for the list. >> >> But I think we still haven't reached a decision whether the "loop >> until correct key is pressed" behavior is useful. >> >> I tried to think how to fit the above requirements into the existing >> model, and it seems to require a new command, and an additional key >> being pressed sometimes, for explicitness. >> >> The attached patch also includes your fix for bug#65558, which seems >> orthogonal to our dilemma, and could probably be installed >> separately. It could be dry-ed up a little, though. >> >> Anyway, with the attached counter-proposal, the list looks like this: >> >> C-x p p C-b - works when project-switch-use-entire-map=t >> C-x p p f M-n - always works >> C-u C-x p p f - same >> C-x p p C-x d - the key sequence is 'C-x p p o C-x d' >> >> With frames: >> >> C-x 5 p p C-b - works when project-switch-use-entire-map=t >> C-x 5 p p f M-n - always works >> C-u C-x 5 p p f emoji TAB - same (thanks to your fix, included) >> C-x 5 p p C-x d - the key sequence is 'C-x 5 C-x p p o C-x d' >> >> The user could add project-list-buffers (or project-switch-to-buffer) >> to project-switch-commands, though, and then >> project-switch-use-entire-map won't be needed. Either way's fine. >> >> To sum up, that does require pressing an extra key to use commands >> outside of project-prefix-map, but OTOH that key is shown right in the >> commands menu. And one doesn't have to (setq >> project-switch-use-entire-map t) to use it, though that doesn't hurt >> either. > > Two thoughts: > > 1. Maybe C-x p o should also exist, which runs the subsequent command in > project-root. (Although I think it would be better if C-x p > magically let you type any binding after C-x p, and the command would > run in project-root, as I pondered much earlier in this thread. But > that's a lot harder...) Then the 'C-x p p' binding wouldn't be available?... Anyway, try the attached updated patch. > 2. Maybe C-x p p should have both `o` (on by default even without > project-switch-use-entire-map) and the no-extra-key version (needs to > be explicitly turned on, possibly by project-switch-use-entire-map) The patch plus (setq project-switch-commands 'project-any-command) should do that for you. > Although, I plan to turn the no-extra-key version on for all my users > anyway. The one extra key is a real cost if you're doing this > frequently.