]> code.delx.au - gnu-emacs/commitdiff
(vc-follow-symlinks): New variable.
authorAndré Spiegel <spiegel@gnu.org>
Wed, 10 Jan 1996 15:27:49 +0000 (15:27 +0000)
committerAndré Spiegel <spiegel@gnu.org>
Wed, 10 Jan 1996 15:27:49 +0000 (15:27 +0000)
(vc-find-file-hook): Use it.

lisp/vc-hooks.el

index f20b1e15820ff85eb3bd71b286e5fdfc3e27d3ad..cba72ddb602fcd11aa373be22a7ed9965e1df1b7 100644 (file)
@@ -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)