bug#41974: 28.0.50; Some vc commands refuse to work when called on non-file buffer

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

bug#41974: 28.0.50; Some vc commands refuse to work when called on non-file buffer

Juri Linkov-2
For example, typing

  M-x vc-print-branch-log RET

on the project's *compilation* buffer signals the error:

  "Buffer *compilation* is not associated with a file"

I think this restriction should be lifted, so vc commands should
work even when called on non-file buffers whose default-directory
is inside the vc project.



Reply | Threaded
Open this post in threaded view
|

bug#41974: 28.0.50; Some vc commands refuse to work when called on non-file buffer

Juri Linkov-2
> On 21.06.2020 02:55, Juri Linkov wrote:
>> I think this restriction should be lifted, so vc commands should
>> work even when called on non-file buffers whose default-directory
>> is inside the vc project.
>
> Agreed.
>
> Does this patch help, or does it miss more cases?
>
> diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
> index 9b12d44978..36013fcdc9 100644
> --- a/lisp/vc/vc.el
> +++ b/lisp/vc/vc.el
> @@ -2563,7 +2563,7 @@ vc-print-branch-log
>      (vc-read-revision "Branch to log: ")))
>    (when (equal branch "")
>      (error "No branch specified"))
> -  (let* ((backend (vc-responsible-backend default-directory))
> +  (let* ((backend (vc-deduce-backend))
>           (rootdir (vc-call-backend backend 'root default-directory)))
>      (vc-print-log-internal backend
>                             (list rootdir) branch t

Strange, this patch has no effect, the same error remains.



Reply | Threaded
Open this post in threaded view
|

bug#41974: 28.0.50; Some vc commands refuse to work when called on non-file buffer

Dmitry Gutov
On 22.06.2020 01:51, Juri Linkov wrote:
> Strange, this patch has no effect, the same error remains.

Sorry, that was a brain fart.

How about this:

diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 9b12d44978..6bb72d8976 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1074,11 +1074,11 @@ vc-deduce-fileset
        (progn                  ;FIXME: Why not `with-current-buffer'?
--Stef.
  (set-buffer vc-parent-buffer)
  (vc-deduce-fileset not-state-changing allow-unregistered
state-model-only-files)))
-     ((and (derived-mode-p 'log-view-mode)
+     ((and (not buffer-file-name)
    (setq backend (vc-responsible-backend default-directory)))
        (list backend nil))
       ((not buffer-file-name)
-       (error "Buffer %s is not associated with a file" (buffer-name)))
+       (error "Buffer %s is not recognized by any VC backend"
(buffer-name)))
       ((and allow-unregistered (not (vc-registered buffer-file-name)))
        (if state-model-only-files
   (list (vc-backend-for-registration (buffer-file-name))



Reply | Threaded
Open this post in threaded view
|

bug#41974: 28.0.50; Some vc commands refuse to work when called on non-file buffer

Juri Linkov-2
> How about this:
>
> diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
> index 9b12d44978..6bb72d8976 100644
> --- a/lisp/vc/vc.el
> +++ b/lisp/vc/vc.el
> @@ -1074,11 +1074,11 @@ vc-deduce-fileset
>        (progn                  ;FIXME: Why not
>        `with-current-buffer'? --Stef.
>   (set-buffer vc-parent-buffer)
>   (vc-deduce-fileset not-state-changing allow-unregistered
>   state-model-only-files)))
> -     ((and (derived-mode-p 'log-view-mode)
> +     ((and (not buffer-file-name)
>     (setq backend (vc-responsible-backend default-directory)))
>        (list backend nil))

Thanks for finding the right place to fix, and it should also fix all
other vc commands that failed on non-file buffers.

>       ((not buffer-file-name)
> -       (error "Buffer %s is not associated with a file" (buffer-name)))
> +       (error "Buffer %s is not recognized by any VC backend"

It seems this code is not necessary anymore because before this code
gets executed, vc-responsible-backend already signals its error
"No VC backend is responsible for file".



Reply | Threaded
Open this post in threaded view
|

bug#41974: 28.0.50; Some vc commands refuse to work when called on non-file buffer

Juri Linkov-2
tags 41974 fixed
close 41974 28.0.50
quit

>>>        ((not buffer-file-name)
>>> -       (error "Buffer %s is not associated with a file" (buffer-name)))
>>> +       (error "Buffer %s is not recognized by any VC backend"
>> It seems this code is not necessary anymore because before this code
>> gets executed, vc-responsible-backend already signals its error
>> "No VC backend is responsible for file".
>
> Even better.

Thanks, pushed to master.