diff options
| author | André Spiegel | 2000-10-02 12:01:09 +0000 |
|---|---|---|
| committer | André Spiegel | 2000-10-02 12:01:09 +0000 |
| commit | 8989ab56c2969e4122afead6868eae9357de27bd (patch) | |
| tree | fad0c2f0a94da6239580f0fd564a6b2b330bc53d | |
| parent | 64e6cc18e674b565b1c48716a251b26b7fef5ac8 (diff) | |
| download | emacs-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.el | 70 |
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) |
| 1082 | If no backend in variable `vc-handled-backends' declares itself | 1082 | "Return the name of a backend system that is responsible for FILE. |
| 1083 | responsible, the first backend in that list will be returned. | 1083 | The optional argument REGISTER means that a backend suitable for |
| 1084 | FILE can also be a directory name (ending with a slash). | 1084 | registration should be found. |
| 1085 | If BACKENDS is non-nil it overrides any current backend or | 1085 | |
| 1086 | `vc-handled-backends'." | 1086 | If REGISTER is nil, then if FILE is already registered, return the |
| 1087 | (or (and (not backends) (not (file-directory-p file)) (vc-backend file)) | 1087 | backend of FILE. If FILE is not registered, or a directory, then the |
| 1088 | (progn | 1088 | first backend in `vc-handled-backends' that declares itself |
| 1089 | (unless backends (setq backends vc-handled-backends)) | 1089 | responsible for FILE is returned. If no backend declares itself |
| 1090 | (unless backends (error "No reponsible backend")) | 1090 | responsible, return the first backend. |
| 1091 | (catch 'found | 1091 | |
| 1092 | (dolist (backend backends) | 1092 | If REGISTER is non-nil, return the first responsible backend under |
| 1093 | (if (vc-call-backend backend 'responsible-p file) | 1093 | which FILE is not yet registered. If there is no such backend, return |
| 1094 | (throw 'found backend))) | 1094 | the first backend under which FILE is not yet registered, but could |
| 1095 | (car backends))))) | 1095 | be 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. |