aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndré Spiegel2000-10-02 12:01:09 +0000
committerAndré Spiegel2000-10-02 12:01:09 +0000
commit8989ab56c2969e4122afead6868eae9357de27bd (patch)
treefad0c2f0a94da6239580f0fd564a6b2b330bc53d
parent64e6cc18e674b565b1c48716a251b26b7fef5ac8 (diff)
downloademacs-8989ab56c2969e4122afead6868eae9357de27bd.tar.gz
emacs-8989ab56c2969e4122afead6868eae9357de27bd.zip
(vc-responsible-backend): Undo the previous change in the argument
list. Handle multiple backends correctly. (vc-find-new-backend): Function removed. (vc-register): Use vc-responsible-backend, as before. (vc-next-action-on-file): Do use vc-registered, not vc-backend.
-rw-r--r--lisp/vc.el70
1 files changed, 40 insertions, 30 deletions
diff --git a/lisp/vc.el b/lisp/vc.el
index 87a92e0d681..d020162332e 100644
--- a/lisp/vc.el
+++ b/lisp/vc.el
@@ -833,7 +833,7 @@ If VERBOSE is non-nil, query the user rather than using default parameters."
833 (error "Aborted"))))) 833 (error "Aborted")))))
834 834
835 ;; Do the right thing 835 ;; Do the right thing
836 (if (not (vc-backend file)) 836 (if (not (vc-registered file))
837 (vc-register verbose comment) 837 (vc-register verbose comment)
838 (vc-recompute-state file) 838 (vc-recompute-state file)
839 (if visited (vc-mode-line file)) 839 (if visited (vc-mode-line file))
@@ -1068,7 +1068,7 @@ first backend that could register the file is used."
1068 "Enter initial comment." 1068 "Enter initial comment."
1069 (lambda (file rev comment) 1069 (lambda (file rev comment)
1070 (message "Registering %s... " file) 1070 (message "Registering %s... " file)
1071 (let ((backend (vc-find-new-backend file))) 1071 (let ((backend (vc-responsible-backend file t)))
1072 (vc-file-clearprops file) 1072 (vc-file-clearprops file)
1073 (vc-call-backend backend 'register file rev comment) 1073 (vc-call-backend backend 'register file rev comment)
1074 (vc-file-setprop file 'vc-backend backend) 1074 (vc-file-setprop file 'vc-backend backend)
@@ -1077,34 +1077,44 @@ first backend that could register the file is used."
1077 (setq backup-inhibited t))) 1077 (setq backup-inhibited t)))
1078 (message "Registering %s... done" file)))) 1078 (message "Registering %s... done" file))))
1079 1079
1080(defun vc-responsible-backend (file &optional backends) 1080
1081 "Return the name of the backend system that is responsible for FILE. 1081(defun vc-responsible-backend (file &optional register)
1082If no backend in variable `vc-handled-backends' declares itself 1082 "Return the name of a backend system that is responsible for FILE.
1083responsible, the first backend in that list will be returned. 1083The optional argument REGISTER means that a backend suitable for
1084FILE can also be a directory name (ending with a slash). 1084registration should be found.
1085If BACKENDS is non-nil it overrides any current backend or 1085
1086`vc-handled-backends'." 1086If REGISTER is nil, then if FILE is already registered, return the
1087 (or (and (not backends) (not (file-directory-p file)) (vc-backend file)) 1087backend of FILE. If FILE is not registered, or a directory, then the
1088 (progn 1088first backend in `vc-handled-backends' that declares itself
1089 (unless backends (setq backends vc-handled-backends)) 1089responsible for FILE is returned. If no backend declares itself
1090 (unless backends (error "No reponsible backend")) 1090responsible, return the first backend.
1091 (catch 'found 1091
1092 (dolist (backend backends) 1092If REGISTER is non-nil, return the first responsible backend under
1093 (if (vc-call-backend backend 'responsible-p file) 1093which FILE is not yet registered. If there is no such backend, return
1094 (throw 'found backend))) 1094the first backend under which FILE is not yet registered, but could
1095 (car backends))))) 1095be registered."
1096 1096 (if (not vc-handled-backends)
1097(defun vc-find-new-backend (file) 1097 (error "No handled backends"))
1098 "Find a new backend to register FILE." 1098 (or (and (not (file-directory-p file)) (not register) (vc-backend file))
1099 (let (backends) 1099 (catch 'found
1100 ;; We can't register if it's already registered 1100 ;; First try: find a responsible backend. If this is for registration,
1101 (dolist (backend vc-handled-backends) 1101 ;; it must be a backend under which FILE is not yet registered.
1102 (when (and (not (vc-call-backend backend 'registered file)) 1102 (dolist (backend vc-handled-backends)
1103 (vc-call-backend backend 'could-register file)) 1103 (and (or (not register)
1104 (push backend backends))) 1104 (not (vc-call-backend backend 'registered file)))
1105 (unless backends 1105 (vc-call-backend backend 'responsible-p file)
1106 (error "Cannot register, no appropriate backend in `vc-handled-backends'")) 1106 (throw 'found backend)))
1107 (vc-responsible-backend file (nreverse backends)))) 1107 ;; no responsible backend
1108 (if (not register)
1109 ;; if this is not for registration, the first backend must do
1110 (car vc-handled-backends)
1111 ;; for registration, we need to find a new backend that
1112 ;; could register FILE
1113 (dolist (backend vc-handled-backends)
1114 (and (not (vc-call-backend backend 'registered file))
1115 (vc-call-backend backend 'could-register file)
1116 (throw 'found backend)))
1117 (error "No backend that could register")))))
1108 1118
1109(defun vc-default-responsible-p (backend file) 1119(defun vc-default-responsible-p (backend file)
1110 "Indicate whether BACKEND is reponsible for FILE. 1120 "Indicate whether BACKEND is reponsible for FILE.