]> git.eshelyaron.com Git - emacs.git/commitdiff
vc-register: Fix setting backup-inhibited
authorSean Whitton <spwhitton@spwhitton.name>
Sun, 13 Jul 2025 11:30:43 +0000 (12:30 +0100)
committerEshel Yaron <me@eshelyaron.com>
Thu, 24 Jul 2025 08:17:56 +0000 (10:17 +0200)
* lisp/vc/vc.el (vc-register): Delete unreachable code trying to
use 'buffer-file-name' as one of the file names.  Properly set
'backup-inhibited' in any file-visiting buffers.

(cherry picked from commit 24bd93b35bbca55cadcc0c6bc1bf0bb7c689a049)

lisp/vc/vc.el

index 45095a331ed09bac2547326489141a818c375708..9645b82f317a736d6607b5bcd09334d2adefe093 100644 (file)
@@ -1714,34 +1714,27 @@ first backend that could register the file is used."
     ;; possibility to register directories rather than files only, since
     ;; many VCS allow that as well.
     (dolist (fname files)
-      (let ((bname (get-file-buffer fname)))
-       (unless fname
-         (setq fname buffer-file-name))
-       (when (vc-call-backend backend 'registered fname)
-         (error "This file is already registered: %s" fname))
-       ;; Watch out for new buffers of size 0: the corresponding file
-       ;; does not exist yet, even though buffer-modified-p is nil.
-       (when bname
-         (with-current-buffer bname
-           (when (and (not (buffer-modified-p))
-                      (zerop (buffer-size))
-                      (not (file-exists-p buffer-file-name)))
-             (set-buffer-modified-p t))
-           (vc-buffer-sync)))))
+      (when (vc-call-backend backend 'registered fname)
+       (error "This file is already registered: %s" fname))
+      ;; Watch out for new buffers of size 0: the corresponding file
+      ;; does not exist yet, even though buffer-modified-p is nil.
+      (when-let* ((bname (get-file-buffer fname)))
+       (with-current-buffer bname
+         (when (and (not (buffer-modified-p))
+                    (zerop (buffer-size))
+                    (not (file-exists-p buffer-file-name)))
+           (set-buffer-modified-p t))
+         (vc-buffer-sync))))
     (message "Registering %s... " files)
     (mapc #'vc-file-clearprops files)
     (vc-call-backend backend 'register files comment)
-    (mapc
-     (lambda (file)
-       (vc-file-setprop file 'vc-backend backend)
-       ;; FIXME: This is wrong: it should set `backup-inhibited' in all
-       ;; the buffers visiting files affected by this `vc-register', not
-       ;; in the current-buffer.
-       ;; (unless vc-make-backup-files
-       ;;   (setq-local backup-inhibited t))
-
-       (vc-resynch-buffer file t t))
-     files)
+    (dolist (fname files)
+      (vc-file-setprop fname 'vc-backend backend)
+      (when-let* ((bname (get-file-buffer fname)))
+        (with-current-buffer bname
+          (unless vc-make-backup-files
+            (setq-local backup-inhibited t))))
+      (vc-resynch-buffer fname t t))
     (message "Registering %s... done" files)))
 
 (defun vc-register-with (backend)