summaryrefslogtreecommitdiff
path: root/lisp/vc-hooks.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2003-05-31 17:43:28 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2003-05-31 17:43:28 +0000
commit0bfb74a943d961d524985db540500fdd53574c5f (patch)
tree5e7d8e7e89ff709c3c0766ab278d74ab658f4f36 /lisp/vc-hooks.el
parent1cca5da4fa13081699e03898f106c2bcd1a1a093 (diff)
downloademacs-0bfb74a943d961d524985db540500fdd53574c5f.tar.gz
(vc-call-backend): Give better error message when backend function is missing.
(vc-find-file-hook): USe unless. Merge if and cond.
Diffstat (limited to 'lisp/vc-hooks.el')
-rw-r--r--lisp/vc-hooks.el74
1 files changed, 38 insertions, 36 deletions
diff --git a/lisp/vc-hooks.el b/lisp/vc-hooks.el
index f6e39b76f85..2cec6fb2ae0 100644
--- a/lisp/vc-hooks.el
+++ b/lisp/vc-hooks.el
@@ -1,11 +1,12 @@
;;; vc-hooks.el --- resident support for version-control
-;; Copyright (C) 1992,93,94,95,96,98,99,2000 Free Software Foundation, Inc.
+;; Copyright (C) 1992,93,94,95,96,98,99,2000,2003
+;; Free Software Foundation, Inc.
;; Author: FSF (see vc.el for full credits)
;; Maintainer: Andre Spiegel <spiegel@gnu.org>
-;; $Id: vc-hooks.el,v 1.149 2003/05/07 17:22:28 monnier Exp $
+;; $Id: vc-hooks.el,v 1.150 2003/05/08 17:45:08 monnier Exp $
;; This file is part of GNU Emacs.
@@ -195,14 +196,15 @@ and else calls
(apply 'vc-default-FUN BACKEND ARGS)
It is usually called via the `vc-call' macro."
- (let ((f (cdr (assoc function-name (get backend 'vc-functions)))))
- (unless f
+ (let ((f (assoc function-name (get backend 'vc-functions))))
+ (if f (setq f (cdr f))
(setq f (vc-find-backend-function backend function-name))
- (put backend 'vc-functions (cons (cons function-name f)
- (get backend 'vc-functions))))
- (if (consp f)
- (apply (car f) (cdr f) args)
- (apply f args))))
+ (push (cons function-name f) (get backend 'vc-functions)))
+ (cond
+ ((null f)
+ (error "Sorry, %s is not implemented for %s" function-name backend))
+ ((consp f) (apply (car f) (cdr f) args))
+ (t (apply f args)))))
(defmacro vc-call (fun file &rest args)
;; BEWARE!! `file' is evaluated twice!!
@@ -649,39 +651,39 @@ current, and kill the buffer that visits the link."
(vc-file-clearprops buffer-file-name)
(cond
((vc-backend buffer-file-name)
+ ;; Compute the state and put it in the modeline.
(vc-mode-line buffer-file-name)
- (cond ((not vc-make-backup-files)
- ;; Use this variable, not make-backup-files,
- ;; because this is for things that depend on the file name.
- (make-local-variable 'backup-inhibited)
- (setq backup-inhibited t))))
+ (unless vc-make-backup-files
+ ;; Use this variable, not make-backup-files,
+ ;; because this is for things that depend on the file name.
+ (set (make-local-variable 'backup-inhibited) t)))
((let* ((link (file-symlink-p buffer-file-name))
(link-type (and link (vc-backend (file-chase-links link)))))
- (if link-type
- (cond ((eq vc-follow-symlinks nil)
- (message
+ (cond ((not link-type) nil) ;Nothing to do.
+ ((eq vc-follow-symlinks nil)
+ (message
"Warning: symbolic link to %s-controlled source file" link-type))
- ((or (not (eq vc-follow-symlinks 'ask))
- ;; If we already visited this file by following
- ;; the link, don't ask again if we try to visit
- ;; it again. GUD does that, and repeated questions
- ;; are painful.
- (get-file-buffer
- (abbreviate-file-name
- (file-chase-links buffer-file-name))))
-
- (vc-follow-link)
- (message "Followed link to %s" buffer-file-name)
- (vc-find-file-hook))
- (t
- (if (yes-or-no-p (format
+ ((or (not (eq vc-follow-symlinks 'ask))
+ ;; If we already visited this file by following
+ ;; the link, don't ask again if we try to visit
+ ;; it again. GUD does that, and repeated questions
+ ;; are painful.
+ (get-file-buffer
+ (abbreviate-file-name
+ (file-chase-links buffer-file-name))))
+
+ (vc-follow-link)
+ (message "Followed link to %s" buffer-file-name)
+ (vc-find-file-hook))
+ (t
+ (if (yes-or-no-p (format
"Symbolic link to %s-controlled source file; follow link? " link-type))
- (progn (vc-follow-link)
- (message "Followed link to %s" buffer-file-name)
- (vc-find-file-hook))
- (message
+ (progn (vc-follow-link)
+ (message "Followed link to %s" buffer-file-name)
+ (vc-find-file-hook))
+ (message
"Warning: editing through the link bypasses version control")
- )))))))))
+ ))))))))
(add-hook 'find-file-hook 'vc-find-file-hook)