From 423a48fc7113d4b2e5688d51f527f45b36a8d161 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Spiegel?= Date: Wed, 10 Jan 1996 15:27:49 +0000 Subject: (vc-follow-symlinks): New variable. (vc-find-file-hook): Use it. --- lisp/vc-hooks.el | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'lisp/vc-hooks.el') diff --git a/lisp/vc-hooks.el b/lisp/vc-hooks.el index f20b1e15820..cba72ddb602 100644 --- a/lisp/vc-hooks.el +++ b/lisp/vc-hooks.el @@ -65,6 +65,16 @@ when creating new masters.") "*If non-nil, backups of registered files are made as with other files. If nil (the default), files covered by version control don't get backups.") +(defvar vc-follow-symlinks 'ask + "*Indicates what to do if you visit a symbolic link to a file +that is under version control. Editing such a file through the +link bypasses the version control system, which is dangerous and +probably not what you want. + If this variable is t, VC follows the link and visits the real file, +telling you about it in the echo area. If it is `ask', VC asks for +confirmation whether it should follow the link. If nil, the link is +visited and a warning displayed.") + (defvar vc-display-status t "*If non-nil, display revision number and lock status in modeline. Otherwise, not displayed.") @@ -924,9 +934,22 @@ control system name." ((let* ((link (file-symlink-p buffer-file-name)) (link-type (and link (vc-backend link)))) (if link-type - (message - "Warning: symbolic link to %s-controlled source file" - link-type)))))))) + (cond ((eq vc-follow-symlinks nil) + (message + "Warning: symbolic link to %s-controlled source file" link-type)) + ((eq vc-follow-symlinks 'ask) + (if (yes-or-no-p (format + "Symbolic link to %s-controlled source file; follow link? " link-type)) + (progn (setq buffer-file-name + (file-truename buffer-file-name)) + (message "Followed link to %s" buffer-file-name) + (vc-find-file-hook)) + (message + "Warning: editing through the link bypasses version control") + )) + (t (setq buffer-file-name (file-truename buffer-file-name)) + (message "Followed link to %s" buffer-file-name) + (vc-find-file-hook)))))))))) (add-hook 'find-file-hooks 'vc-find-file-hook) -- cgit v1.2.1