diff options
author | Karoly Lorentey <lorentey@elte.hu> | 2006-12-03 12:25:18 +0000 |
---|---|---|
committer | Karoly Lorentey <lorentey@elte.hu> | 2006-12-03 12:25:18 +0000 |
commit | d6e01aa592f7326dffeafa6e97180a1cc39fe7ea (patch) | |
tree | 5a22b785cfee1d77d6452607450a12ca82eeecd3 /lisp/vc.el | |
parent | 14bcc1e098410087a837313e2fc822319ff2e8ca (diff) | |
parent | 4975e69596a64247e8995d1ff9084b98a9a5ed0d (diff) | |
download | emacs-d6e01aa592f7326dffeafa6e97180a1cc39fe7ea.tar.gz |
Merged from emacs@sv.gnu.org.
Patches applied:
* emacs@sv.gnu.org/emacs--devo--0--patch-479
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-480
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-481
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-482
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-483
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-484
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-485
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-153
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-154
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-155
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-585
Diffstat (limited to 'lisp/vc.el')
-rw-r--r-- | lisp/vc.el | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/lisp/vc.el b/lisp/vc.el index d72ee4c7e4e..afeba8d2409 100644 --- a/lisp/vc.el +++ b/lisp/vc.el @@ -2682,25 +2682,32 @@ To get a prompt, use a prefix argument." (error "There is no version-controlled file in this buffer")) (let ((backend (vc-backend buffer-file-name)) (backends nil)) - (unless backend - (error "File %s is not under version control" buffer-file-name)) - ;; Find the registered backends. - (dolist (backend vc-handled-backends) - (when (vc-call-backend backend 'registered buffer-file-name) - (push backend backends))) - ;; Find the next backend. - (let ((def (car (delq backend (append (memq backend backends) backends)))) - (others (delete backend backends))) - (cond - ((null others) (error "No other backend to switch to")) - (current-prefix-arg - (intern - (upcase - (completing-read - (format "Switch to backend [%s]: " def) - (mapcar (lambda (b) (list (downcase (symbol-name b)))) backends) - nil t nil nil (downcase (symbol-name def)))))) - (t def)))))) + (unwind-protect + (progn + (unless backend + (error "File %s is not under version control" buffer-file-name)) + ;; Find the registered backends. + (dolist (backend vc-handled-backends) + (when (vc-call-backend backend 'registered buffer-file-name) + (push backend backends))) + ;; Find the next backend. + (let ((def (car (delq backend + (append (memq backend backends) backends)))) + (others (delete backend backends))) + (cond + ((null others) (error "No other backend to switch to")) + (current-prefix-arg + (intern + (upcase + (completing-read + (format "Switch to backend [%s]: " def) + (mapcar (lambda (b) (list (downcase (symbol-name b)))) backends) + nil t nil nil (downcase (symbol-name def)))))) + (t def)))) + ;; Calling the `registered' method can mess up the file + ;; properties, so we want to revert them to what they were. + (if (and backend (delete backend backends)) + (vc-call-backend backend 'registered buffer-file-name)))))) (unless (eq backend (vc-backend file)) (vc-file-clearprops file) (vc-file-setprop file 'vc-backend backend) |