changeset 14142:c9cb9dbb2d40

(vc-follow-symlinks): New variable. (vc-find-file-hook): Use it.
author André Spiegel <spiegel@gnu.org>
date Wed, 10 Jan 1996 15:27:49 +0000
parents dc502b9c237c
children bcc924fdb1f8
files lisp/vc-hooks.el
diffstat 1 files changed, 26 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/vc-hooks.el	Wed Jan 10 15:24:03 1996 +0000
+++ b/lisp/vc-hooks.el	Wed Jan 10 15:27:49 1996 +0000
@@ -65,6 +65,16 @@
   "*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 @@
      ((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)