GNU bug report logs - #79126
vc-switch-working-tree does not work if there is no matching file

Previous Next

Package: emacs;

Reported by: Dmitry Gutov <dmitry <at> gutov.dev>

Date: Wed, 30 Jul 2025 02:38:01 UTC

Severity: normal

Done: Sean Whitton <spwhitton <at> spwhitton.name>

Full log


View this message in rfc822 format

From: Sean Whitton <spwhitton <at> spwhitton.name>
To: Dmitry Gutov <dmitry <at> gutov.dev>
Cc: sbaugh <at> janestreet.com, 79126 <at> debbugs.gnu.org
Subject: bug#79126: vc-switch-working-tree does not work if there is no matching file
Date: Wed, 30 Jul 2025 12:04:06 +0100
Hello,

On Wed 30 Jul 2025 at 05:36am +03, Dmitry Gutov wrote:

> X-Debbugs-CC: spwhitton <at> spwhitton.name, sbaugh <at> janestreet.com
>
> Hi!
>
> If the current buffer does not visit a file (such as Dired, mentioned in a
> FIXME comment), or if the current file has no corresponding on the other
> worktree, we end up with an error.
>
> Like
>
>   file-relative-name: Wrong type argument: stringp, nil
>
> or
>
>   File ‘lisp/progmodes/abc.el’ not found in ‘~/vc/emacs-28/’
>
> I guess some of these could be improved in project-find-matching-file (support
> for more major modes?) but semantically it seems like vc-switch-working-tree
> should try harder. Falling back to visiting the worktree root in Dired, if it
> doesn't find a better choice.

I was thinking I would implement switching between Dired directories and
VC-Dir buffers in project-find-matching-file, yeah.

Maybe when the file doesn't exist we could fall back to going only as
high up the tree as we need to.  So for example if foo/bar.el doesn't
exist in the other worktree but foo/ does, invoking
vc-switch-working-tree would go to a dired buffer visiting foo/.

The last resort fallback could possibly be to call project-switch-project?

-- 
Sean Whitton




This bug report was last modified 4 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.