GNU bug report logs - #32596
27.0.50; Support VC single file operations from Dired

Previous Next

Package: emacs;

Reported by: Juri Linkov <juri <at> linkov.net>

Date: Thu, 30 Aug 2018 22:13:02 UTC

Severity: wishlist

Tags: patch

Found in version 27.0.50

Done: Juri Linkov <juri <at> linkov.net>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Juri Linkov <juri <at> linkov.net>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#32596: closed (27.0.50; Support VC single file operations
 from Dired)
Date: Wed, 07 Nov 2018 22:55:01 +0000
[Message part 1 (text/plain, inline)]
Your message dated Thu, 08 Nov 2018 00:53:25 +0200
with message-id <87muqkts7u.fsf <at> mail.linkov.net>
and subject line Re: bug#32596: 27.0.50; Support VC single file operations from Dired
has caused the debbugs.gnu.org bug report #32596,
regarding 27.0.50; Support VC single file operations from Dired
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
32596: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=32596
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Juri Linkov <juri <at> linkov.net>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.0.50; Support VC single file operations from Dired
Date: Fri, 31 Aug 2018 01:02:30 +0300
[Message part 3 (text/plain, inline)]
Both vc-dir-mode and dired-mode are supported in vc-deduce-fileset,
but only vc-dir-mode is supported in vc-ensure-vc-buffer.

This patch prepares a VC-controlled file buffer from Dired as well.

Error-checking is moved outside of the last branch of cond,
because in addition to dired-mode, it's also needed for vc-dir-mode
to avoid the failure with a backtrace when a single-file operation
is executed in vc-dir-mode on a directory.

Also I noticed that the check ‘(unless backend (error "Directory not under VC"))’
is not needed anymore because now vc-responsible-backend raises the same error.
There are more such useless checks in vc.el that could be removed as well.

[vc-ensure-vc-buffer.1.patch (text/x-diff, inline)]
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index b2bedfae93..ea1ba63f8f 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1055,27 +1055,27 @@ vc-deduce-fileset
      (t (error "File is not under version control")))))
 
 (defun vc-dired-deduce-fileset ()
-  (let ((backend (vc-responsible-backend default-directory)))
-    (unless backend (error "Directory not under VC"))
-    (list backend
-          (dired-map-over-marks (dired-get-filename nil t) nil))))
+  (list (vc-responsible-backend default-directory)
+        (dired-map-over-marks (dired-get-filename nil t) nil)))
 
 (defun vc-ensure-vc-buffer ()
   "Make sure that the current buffer visits a version-controlled file."
   (cond
    ((derived-mode-p 'vc-dir-mode)
     (set-buffer (find-file-noselect (vc-dir-current-file))))
+   ((derived-mode-p 'dired-mode)
+    (set-buffer (find-file-noselect (dired-get-filename))))
    (t
     (while (and vc-parent-buffer
                 (buffer-live-p vc-parent-buffer)
 		;; Avoid infinite looping when vc-parent-buffer and
 		;; current buffer are the same buffer.
  		(not (eq vc-parent-buffer (current-buffer))))
-      (set-buffer vc-parent-buffer))
-    (if (not buffer-file-name)
-	(error "Buffer %s is not associated with a file" (buffer-name))
-      (unless (vc-backend buffer-file-name)
-	(error "File %s is not under version control" buffer-file-name))))))
+      (set-buffer vc-parent-buffer))))
+  (if (not buffer-file-name)
+      (error "Buffer %s is not associated with a file" (buffer-name))
+    (unless (vc-backend buffer-file-name)
+      (error "File %s is not under version control" buffer-file-name))))
 
 ;;; Support for the C-x v v command.
 ;; This is where all the single-file-oriented code from before the fileset
[Message part 5 (message/rfc822, inline)]
From: Juri Linkov <juri <at> linkov.net>
To: 32596-done <at> debbugs.gnu.org
Subject: Re: bug#32596: 27.0.50; Support VC single file operations from Dired
Date: Thu, 08 Nov 2018 00:53:25 +0200
> Both vc-dir-mode and dired-mode are supported in vc-deduce-fileset,
> but only vc-dir-mode is supported in vc-ensure-vc-buffer.
>
> This patch prepares a VC-controlled file buffer from Dired as well.
>
> Error-checking is moved outside of the last branch of cond,
> because in addition to dired-mode, it's also needed for vc-dir-mode
> to avoid the failure with a backtrace when a single-file operation
> is executed in vc-dir-mode on a directory.

Done.


This bug report was last modified 6 years and 280 days ago.

Previous Next


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