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

From: Eshel Yaron <[email-masked]>
Date: Wed, 06 Aug 2025 18:15:32 +0200

Hi,

Sean Whitton <[email-masked]> writes:

> Hello,
>
> Thank you all for the comments.  Please find attached an implementation.

[...]

> From a458eb6a117408821c7ec304c7bef60cf4a544ab Mon Sep 17 00:00:00 2001
> From: Sean Whitton <[email-masked]>
> Date: Wed, 6 Aug 2025 15:05:08 +0100
> Subject: [PATCH] Generalize project-find-matching-file to other major modes
>
> * lisp/progmodes/project.el (dired-current-directory): Declare.
> (project-find-matching-file): Handle Dired buffers (bug#79126).

Any good reason to special-case Dired?  Wouldn't it be nicer to have
Dired set project-find-matching-buffer-function appropriately, as I do
in my implementation with vc-switch-working-tree-function? :)

[...]

> +                               (dirp (dired-current-directory))

I don't think dired-current-directory is the right choice here.  It does
the wrong thing when point is in a subdir added with 'i' (it gives you
the subdir, not the dir of the current buffer).  I use:

  (car (ensure-list dired-directory))

Perhaps there's an even cleaner way to do that, but I don't know of one.

Best,

Eshel