From: Bill Wohler Date: Tue, 13 Dec 2005 00:48:04 +0000 (+0000) Subject: (vc-svn-registered): Fix problem of visiting non-writable X-Git-Tag: emacs-pretest-22.0.90~5301 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=63fc53c944c30b88470c68b13db8416da4616ce4;p=emacs.git (vc-svn-registered): Fix problem of visiting non-writable Subversion-controlled files by saving window configuration before calling vc-do-command. vc-do-command calls pop-to-buffer on error which is unexpected during registration. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4790e1f341c..c24c6440d88 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,8 +1,14 @@ +2005-12-12 Bill Wohler + + * vc-svn.el (vc-svn-registered): Fix problem of visiting + non-writable Subversion-controlled files by saving window + configuration before calling vc-do-command. vc-do-command calls + pop-to-buffer on error which is unexpected during registration. + 2005-12-12 Jay Belanger * calc/README: Update the summary of changes. - 2005-12-12 Stefan Monnier * descr-text.el (describe-char): Rework last fix to solve the problem diff --git a/lisp/vc-svn.el b/lisp/vc-svn.el index 8480d61c843..cf822406384 100644 --- a/lisp/vc-svn.el +++ b/lisp/vc-svn.el @@ -114,13 +114,18 @@ This is only meaningful if you don't use the implicit checkout model (file-name-directory file))) (with-temp-buffer (cd (file-name-directory file)) - (condition-case nil - (vc-svn-command t 0 file "status" "-v") - ;; Some problem happened. E.g. We can't find an `svn' executable. - ;; We used to only catch `file-error' but when the process is run on - ;; a remote host via Tramp, the error is only reported via the - ;; exit status which is turned into an `error' by vc-do-command. - (error nil)) + (condition-case nil + ;; Save configuration since vc-do-command calls pop-to-buffer on + ;; error (such as visiting a Subversion-controlled file that you + ;; don't have permission to edit). This causes later problems + ;; during registration. + (save-window-excursion + (vc-svn-command t 0 file "status" "-v")) + ;; Some problem happened. E.g. We can't find an `svn' executable. + ;; We used to only catch `file-error' but when the process is run on + ;; a remote host via Tramp, the error is only reported via the + ;; exit status which is turned into an `error' by vc-do-command. + (error nil)) (vc-svn-parse-status t) (eq 'SVN (vc-file-getprop file 'vc-backend)))))