Hi Matthias, On 02.03.2021 23:18, Matthias Meulien wrote: > When I C-x p v (project-vc-dir) from a buffer with project root called, > say, "myproject" , I switch to a buffer called *vc-dir*. > When I C-x p s (project-shell) from a buffer with same project root, I > switch to a buffer called *myproject-shell* > > Later, I found it not very convenient when switching between buffers by > name using C-x b (switch-to-buffer) to have one buffer with a prefix > build from the project root and one with a suffix. Don't you think we > should homogenize those namings?   Since when I M-x shell then C-u M-x > shell, I switch to a *shell*<2> buffer, I'd suggest to rename the buffer > created by project-shell to *shell*... What you're asking for makes sense, but there is a snag because of how these commands are implemented. vc-dir doesn't choose the buffer name format itself. It ultimately calls create-file-buffer (which has an advice made by uniquify) which renames the buffer based on uniquify-buffer-name-style (if uniquify is loaded in the current session), of course. The problem with that function is that it always creates a new buffer. So, before calling it, vc-dir-prepare-status-buffer does a search for existing buffer and can find existing one if it matches by major mode and default directory. Both shell and eshell buffers can change their default-directory, but we can track which project they belong to with a new variable. See the attached patch. There's one problem, though: when called with C-u, the piece of behavior which reads as "create a new inferior shell buffer even if one already exists" now creates buffers uniquely named according to uniquify's rules, which seems to mean *shell* emacs-master/*shell* vc/emacs-master/*shell* instead of what one might expect, like emacs-master/*shell* emacs-master/*shell*<2> emacs-master/*shell*<3> Perhaps the solution is not to go through uniquify for this, but then we project-shell can't really be consistent with project-vc-dir.