Subject: Re: bug#79126: vc-switch-working-tree does not work if there is no matching file

From: Sean Whitton <[email-masked]>
Date: Tue, 05 Aug 2025 11:47:22 +0100

Hello,

On Wed 30 Jul 2025 at 09:41am -04, Spencer Baugh via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:

> Sean Whitton <[email-masked]> writes:
>> Hello,
>>
>> On Wed 30 Jul 2025 at 06:30am +02, Eshel Yaron wrote:
>>
>>> FWIW, while incorporating this new feature in my Emacs branch, I've made
>>> a few experimental tweaks that eliminate these errors.  Namely, I added
>>> a variable vc-switch-working-tree-function which vc-switch-working-tree
>>> consults to do the actual switching.  By default this variable is set to
>>> a function that works for file-visiting buffers (similarly to the
>>> current implementation in master), but major modes can readily set this
>>> variable buffer-locally to provide worktree-switching support also for
>>> non-file buffers.  I used this indirection to support Dired buffers.
>>
>> Interesting, though it seems to me that instead of adding a whole new
>> variable vc-switch-working-tree-function, someone could just write a
>> custom command and bind that to 'C-x v w w'?  Wouldn't that pretty much
>> cover it?
>
> No, because multiple other packages providing special buffers might want
> to integrate with the existing C-x v w w command.

Ah, are you thinking they would do this by using add-function on
vc-switch-working-tree-function?

> This sounds like a great idea to me, seems like it would be pretty nice.
>
> For example, we might want:
> - C-x v w w while in vc-dir brings you to vc-dir in the other worktree
> - C-x v w w while in project-eshell brings you to project-eshell in the
>   other worktree
> - C-x v w w while in magit-status brings you to magit-status in the other
>   worktree
>
> Also, at my site there is a custom "worktree/branch overview" buffer and
> it would be great if it was possible to make C-x v w w switch to the
> overview buffer for the other worktree.

Let's make sure we can support all these, indeed.

-- 
Sean Whitton