From: Sean Whitton Date: Sun, 13 Jul 2025 11:30:43 +0000 (+0100) Subject: vc-register: Fix setting backup-inhibited X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0b39c5bf05c0ace16388243bb0817a9800d87cde;p=emacs.git vc-register: Fix setting backup-inhibited * 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) --- diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index 45095a331ed..9645b82f317 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -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)