aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Whitton2025-07-13 12:30:43 +0100
committerSean Whitton2025-07-13 12:51:04 +0100
commit24bd93b35bbca55cadcc0c6bc1bf0bb7c689a049 (patch)
tree94fb6795983c9fc675a1e122c684c363bc542752
parent0c97e6aeca257833f97517459514145f663d8a93 (diff)
downloademacs-24bd93b35bbca55cadcc0c6bc1bf0bb7c689a049.tar.gz
emacs-24bd93b35bbca55cadcc0c6bc1bf0bb7c689a049.zip
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.
-rw-r--r--lisp/vc/vc.el43
1 files changed, 18 insertions, 25 deletions
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 63de0ae0c1b..3b388553916 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1719,34 +1719,27 @@ first backend that could register the file is used."
1719 ;; possibility to register directories rather than files only, since 1719 ;; possibility to register directories rather than files only, since
1720 ;; many VCS allow that as well. 1720 ;; many VCS allow that as well.
1721 (dolist (fname files) 1721 (dolist (fname files)
1722 (let ((bname (get-file-buffer fname))) 1722 (when (vc-call-backend backend 'registered fname)
1723 (unless fname 1723 (error "This file is already registered: %s" fname))
1724 (setq fname buffer-file-name)) 1724 ;; Watch out for new buffers of size 0: the corresponding file
1725 (when (vc-call-backend backend 'registered fname) 1725 ;; does not exist yet, even though buffer-modified-p is nil.
1726 (error "This file is already registered: %s" fname)) 1726 (when-let* ((bname (get-file-buffer fname)))
1727 ;; Watch out for new buffers of size 0: the corresponding file 1727 (with-current-buffer bname
1728 ;; does not exist yet, even though buffer-modified-p is nil. 1728 (when (and (not (buffer-modified-p))
1729 (when bname 1729 (zerop (buffer-size))
1730 (with-current-buffer bname 1730 (not (file-exists-p buffer-file-name)))
1731 (when (and (not (buffer-modified-p)) 1731 (set-buffer-modified-p t))
1732 (zerop (buffer-size)) 1732 (vc-buffer-sync))))
1733 (not (file-exists-p buffer-file-name)))
1734 (set-buffer-modified-p t))
1735 (vc-buffer-sync)))))
1736 (message "Registering %s... " files) 1733 (message "Registering %s... " files)
1737 (mapc #'vc-file-clearprops files) 1734 (mapc #'vc-file-clearprops files)
1738 (vc-call-backend backend 'register files comment) 1735 (vc-call-backend backend 'register files comment)
1739 (mapc 1736 (dolist (fname files)
1740 (lambda (file) 1737 (vc-file-setprop fname 'vc-backend backend)
1741 (vc-file-setprop file 'vc-backend backend) 1738 (when-let* ((bname (get-file-buffer fname)))
1742 ;; FIXME: This is wrong: it should set `backup-inhibited' in all 1739 (with-current-buffer bname
1743 ;; the buffers visiting files affected by this `vc-register', not 1740 (unless vc-make-backup-files
1744 ;; in the current-buffer. 1741 (setq-local backup-inhibited t))))
1745 ;; (unless vc-make-backup-files 1742 (vc-resynch-buffer fname t t))
1746 ;; (setq-local backup-inhibited t))
1747
1748 (vc-resynch-buffer file t t))
1749 files)
1750 (message "Registering %s... done" files))) 1743 (message "Registering %s... done" files)))
1751 1744
1752(defun vc-register-with (backend) 1745(defun vc-register-with (backend)