Sorry for the possible duplicate, but it seems this message didn't reach the bug tracker, or other recipients. Resending contents below. On 23/08/2023 20:54, Juri Linkov wrote: > There is no code where to bind a dynamic variable, because its value > should be available for the next command in the command loop. > If you agree there is no other way to implement this than next-default-directory, > then I could bring up the discussion on emacs-devel. Before we dive into all that, why not try advice on 'command-execute'? For the PoC code at least. It's in Lisp since 2013. The comment in its body does say "Called directly from the C code", but I'm not sure if that has any direct implications for us. This attached piece of code implements the project-switch-project as you outlined. Does it work well for you/others? Careful when testing or modifying: a typo can break the command loop (and thus the session). To me it seems a little too bare-bones, lacking the instructive hints project-switch-project currently has.