Mercurial > emacs
annotate lisp/net/tramp-vc.el @ 80114:371aabe44346
(after-init-hook): Set inhibit-startup-screen to t
after reading the desktop.
author | Juri Linkov <juri@jurta.org> |
---|---|
date | Tue, 12 Feb 2008 23:30:03 +0000 |
parents | 02b15b3223ca |
children |
rev | line source |
---|---|
45861 | 1 ;;; tramp-vc.el --- Version control integration for TRAMP.el |
2 | |
80005
02b15b3223ca
* net/tramp-vc.el (tramp-vc-do-command): Use `mapc' instead of `mapcar'.
Michael Albinus <michael.albinus@gmx.de>
parents:
79714
diff
changeset
|
3 ;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, |
02b15b3223ca
* net/tramp-vc.el (tramp-vc-do-command): Use `mapc' instead of `mapcar'.
Michael Albinus <michael.albinus@gmx.de>
parents:
79714
diff
changeset
|
4 ;; 2007, 2008 Free Software Foundation, Inc. |
45861 | 5 |
6 ;; Author: Daniel Pittman <daniel@danann.net> | |
7 ;; Keywords: comm, processes | |
8 | |
9 ;; This file is part of GNU Emacs. | |
10 | |
11 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
12 ;; it under the terms of the GNU General Public License as published by | |
78230
84cf1e2214c5
Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents:
77986
diff
changeset
|
13 ;; the Free Software Foundation; either version 3, or (at your option) |
45861 | 14 ;; any later version. |
15 | |
16 ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
20 | |
21 ;; You should have received a copy of the GNU General Public License | |
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
64085 | 23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
24 ;; Boston, MA 02110-1301, USA. | |
45861 | 25 |
26 ;;; Commentary: | |
27 | |
28 ;; See the main module, 'tramp.el' for discussion of the purpose of TRAMP. | |
29 ;; This module provides integration between remote files accessed by TRAMP and | |
30 ;; the Emacs version control system. | |
31 | |
32 ;;; Code: | |
33 | |
34 (require 'vc) | |
35 ;; Old VC defines vc-rcs-release in vc.el, new VC requires extra module. | |
36 (unless (boundp 'vc-rcs-release) | |
37 (require 'vc-rcs)) | |
38 (require 'tramp) | |
39 | |
55420
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
40 ;; Avoid byte-compiler warnings if the byte-compiler supports this. |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
41 ;; Currently, XEmacs supports this. |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
42 (eval-when-compile |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
43 (when (fboundp 'byte-compiler-options) |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
44 (let (unused-vars) ; Pacify Emacs byte-compiler |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
45 (defalias 'warnings 'identity) ; Pacify Emacs byte-compiler |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
46 (byte-compiler-options (warnings (- unused-vars)))))) |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
47 |
45861 | 48 ;; -- vc -- |
49 | |
50 ;; This used to blow away the file-name-handler-alist and reinstall | |
51 ;; TRAMP into it. This was intended to let VC work remotely. It didn't, | |
52 ;; at least not in my XEmacs 21.2 install. | |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59582
diff
changeset
|
53 ;; |
45861 | 54 ;; In any case, tramp-run-real-handler now deals correctly with disabling |
55 ;; the things that should be, making this a no-op. | |
56 ;; | |
57 ;; I have removed it from the tramp-file-name-handler-alist because the | |
58 ;; shortened version does nothing. This is for reference only now. | |
59 ;; | |
60 ;; Daniel Pittman <daniel@danann.net> | |
61 ;; | |
62 ;; (defun tramp-handle-vc-registered (file) | |
63 ;; "Like `vc-registered' for tramp files." | |
64 ;; (tramp-run-real-handler 'vc-registered (list file))) | |
65 | |
66 ;; `vc-do-command' | |
67 ;; This function does not deal well with remote files, so we define | |
68 ;; our own version and make a backup of the original function and | |
69 ;; call our version for tramp files and the original version for | |
70 ;; normal files. | |
71 | |
72 ;; The following function is pretty much copied from vc.el, but | |
73 ;; the part that actually executes a command is changed. | |
74 ;; CCC: this probably works for Emacs 21, too. | |
75 (defun tramp-vc-do-command (buffer okstatus command file last &rest flags) | |
76 "Like `vc-do-command' but invoked for tramp files. | |
77 See `vc-do-command' for more information." | |
78 (save-match-data | |
56460
9459300bf43b
Sync with Tramp 2.0.43.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
55420
diff
changeset
|
79 (and file (setq file (expand-file-name file))) |
45861 | 80 (if (not buffer) (setq buffer "*vc*")) |
81 (if vc-command-messages | |
82 (message "Running `%s' on `%s'..." command file)) | |
83 (let ((obuf (current-buffer)) (camefrom (current-buffer)) | |
84 (squeezed nil) | |
85 (olddir default-directory) | |
86 vc-file status) | |
56460
9459300bf43b
Sync with Tramp 2.0.43.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
55420
diff
changeset
|
87 (let* ((v (tramp-dissect-file-name (expand-file-name file))) |
45861 | 88 (multi-method (tramp-file-name-multi-method v)) |
89 (method (tramp-file-name-method v)) | |
90 (user (tramp-file-name-user v)) | |
91 (host (tramp-file-name-host v)) | |
49995
a0e8a85259ed
Version 2.0.30 released.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
49598
diff
changeset
|
92 (localname (tramp-file-name-localname v))) |
45861 | 93 (set-buffer (get-buffer-create buffer)) |
94 (set (make-local-variable 'vc-parent-buffer) camefrom) | |
95 (set (make-local-variable 'vc-parent-buffer-name) | |
96 (concat " from " (buffer-name camefrom))) | |
97 (setq default-directory olddir) | |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59582
diff
changeset
|
98 |
45861 | 99 (erase-buffer) |
100 | |
80005
02b15b3223ca
* net/tramp-vc.el (tramp-vc-do-command): Use `mapc' instead of `mapcar'.
Michael Albinus <michael.albinus@gmx.de>
parents:
79714
diff
changeset
|
101 (mapc |
02b15b3223ca
* net/tramp-vc.el (tramp-vc-do-command): Use `mapc' instead of `mapcar'.
Michael Albinus <michael.albinus@gmx.de>
parents:
79714
diff
changeset
|
102 (lambda (s) (and s (setq squeezed (append squeezed (list s))))) |
45861 | 103 flags) |
104 (if (and (eq last 'MASTER) file | |
105 (setq vc-file (vc-name file))) | |
106 (setq squeezed | |
107 (append squeezed | |
49995
a0e8a85259ed
Version 2.0.30 released.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
49598
diff
changeset
|
108 (list (tramp-file-name-localname |
45861 | 109 (tramp-dissect-file-name vc-file)))))) |
110 (if (and file (eq last 'WORKFILE)) | |
111 (progn | |
112 (let* ((pwd (expand-file-name default-directory)) | |
113 (preflen (length pwd))) | |
114 (if (string= (substring file 0 preflen) pwd) | |
115 (setq file (substring file preflen)))) | |
116 (setq squeezed (append squeezed (list file))))) | |
117 ;; Unless we (save-window-excursion) the layout of windows in | |
118 ;; the current frame changes. This is painful, at best. | |
119 ;; | |
120 ;; As a point of note, (save-excursion) is still here only because | |
121 ;; it preserves (point) in the current buffer. (save-window-excursion) | |
122 ;; does not, at least under XEmacs 21.2. | |
123 ;; | |
124 ;; I trust that the FSF support this as well. I can't find useful | |
125 ;; documentation to check :( | |
126 ;; | |
127 ;; Daniel Pittman <daniel@danann.net> | |
128 (save-excursion | |
129 (save-window-excursion | |
130 ;; Actually execute remote command | |
59582
92796330257a
Sync with Tramp 2.0.47.
Michael Albinus <michael.albinus@gmx.de>
parents:
57653
diff
changeset
|
131 ;; `shell-command' cannot be used; it isn't magic in XEmacs. |
92796330257a
Sync with Tramp 2.0.47.
Michael Albinus <michael.albinus@gmx.de>
parents:
57653
diff
changeset
|
132 (tramp-handle-shell-command |
45861 | 133 (mapconcat 'tramp-shell-quote-argument |
134 (cons command squeezed) " ") t) | |
135 ;;(tramp-wait-for-output) | |
136 ;; Get status from command | |
137 (tramp-send-command multi-method method user host "echo $?") | |
138 (tramp-wait-for-output) | |
139 ;; Make sure to get status from last line of output. | |
140 (goto-char (point-max)) (forward-line -1) | |
141 (setq status (read (current-buffer))) | |
142 (message "Command %s returned status %d." command status))) | |
143 (goto-char (point-max)) | |
144 (set-buffer-modified-p nil) | |
145 (forward-line -1) | |
48973
09acf3f65bb5
* net/tramp*.el: Sync with upstream version 2.0.28. Bugfixes.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
45861
diff
changeset
|
146 (if (or (not (integerp status)) |
09acf3f65bb5
* net/tramp*.el: Sync with upstream version 2.0.28. Bugfixes.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
45861
diff
changeset
|
147 (and (integerp okstatus) (< okstatus status))) |
45861 | 148 (progn |
149 (pop-to-buffer buffer) | |
150 (goto-char (point-min)) | |
151 (shrink-window-if-larger-than-buffer) | |
152 (error "Running `%s'...FAILED (%s)" command | |
153 (if (integerp status) | |
154 (format "status %d" status) | |
155 status)) | |
156 ) | |
157 (if vc-command-messages | |
158 (message "Running %s...OK" command)) | |
159 ) | |
160 (set-buffer obuf) | |
161 status)) | |
162 )) | |
163 | |
164 ;; Following code snarfed from Emacs 21 vc.el and slightly tweaked. | |
165 (defun tramp-vc-do-command-new (buffer okstatus command file &rest flags) | |
166 "Like `vc-do-command' but for TRAMP files. | |
167 This function is for the new VC which comes with Emacs 21. | |
168 Since TRAMP doesn't do async commands yet, this function doesn't, either." | |
169 (and file (setq file (expand-file-name file))) | |
170 (if vc-command-messages | |
171 (message "Running %s on %s..." command file)) | |
172 (save-current-buffer | |
55420
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
173 (unless (eq buffer t) |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
174 ; Pacify byte-compiler |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
175 (funcall (symbol-function 'vc-setup-buffer) buffer)) |
45861 | 176 (let ((squeezed nil) |
177 (inhibit-read-only t) | |
178 (status 0)) | |
179 (let* ((v (when file (tramp-dissect-file-name file))) | |
180 (multi-method (when file (tramp-file-name-multi-method v))) | |
181 (method (when file (tramp-file-name-method v))) | |
182 (user (when file (tramp-file-name-user v))) | |
183 (host (when file (tramp-file-name-host v))) | |
49995
a0e8a85259ed
Version 2.0.30 released.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
49598
diff
changeset
|
184 (localname (when file (tramp-file-name-localname v)))) |
45861 | 185 (setq squeezed (delq nil (copy-sequence flags))) |
186 (when file | |
48973
09acf3f65bb5
* net/tramp*.el: Sync with upstream version 2.0.28. Bugfixes.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
45861
diff
changeset
|
187 (setq squeezed (append squeezed (list (file-relative-name |
09acf3f65bb5
* net/tramp*.el: Sync with upstream version 2.0.28. Bugfixes.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
45861
diff
changeset
|
188 file default-directory))))) |
45861 | 189 (let ((w32-quote-process-args t)) |
190 (when (eq okstatus 'async) | |
191 (message "Tramp doesn't do async commands, running synchronously.")) | |
59582
92796330257a
Sync with Tramp 2.0.47.
Michael Albinus <michael.albinus@gmx.de>
parents:
57653
diff
changeset
|
192 ;; `shell-command' cannot be used; it isn't magic in XEmacs. |
92796330257a
Sync with Tramp 2.0.47.
Michael Albinus <michael.albinus@gmx.de>
parents:
57653
diff
changeset
|
193 (setq status (tramp-handle-shell-command |
45861 | 194 (mapconcat 'tramp-shell-quote-argument |
195 (cons command squeezed) " ") t)) | |
48973
09acf3f65bb5
* net/tramp*.el: Sync with upstream version 2.0.28. Bugfixes.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
45861
diff
changeset
|
196 (when (or (not (integerp status)) |
09acf3f65bb5
* net/tramp*.el: Sync with upstream version 2.0.28. Bugfixes.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
45861
diff
changeset
|
197 (and (integerp okstatus) (< okstatus status))) |
45861 | 198 (pop-to-buffer (current-buffer)) |
199 (goto-char (point-min)) | |
200 (shrink-window-if-larger-than-buffer) | |
201 (error "Running %s...FAILED (%s)" command | |
202 (if (integerp status) (format "status %d" status) status)))) | |
203 (if vc-command-messages | |
204 (message "Running %s...OK" command)) | |
55420
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
205 ; Pacify byte-compiler |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
206 (funcall (symbol-function 'vc-exec-after) |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
207 `(run-hook-with-args |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
208 'vc-post-command-functions ',command ',localname ',flags)) |
45861 | 209 status)))) |
210 | |
211 | |
212 ;; The context for a VC command is the current buffer. | |
213 ;; That makes a test on the buffers file more reliable than a test on the | |
214 ;; arguments. | |
215 ;; This is needed to handle remote VC correctly - else we test against the | |
216 ;; local VC system and get things wrong... | |
217 ;; Daniel Pittman <daniel@danann.net> | |
218 ;;-(if (fboundp 'vc-call-backend) | |
219 ;;- () ;; This is the new VC for which we don't have an appropriate advice yet | |
68335
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
220 ;;-) |
57653
b324ca4df07c
* simple.el (process-file): New function, similar to call-process
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
56460
diff
changeset
|
221 (unless (fboundp 'process-file) |
68335
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
222 (if (fboundp 'vc-call-backend) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
223 (defadvice vc-do-command |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
224 (around tramp-advice-vc-do-command |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
225 (buffer okstatus command file &rest flags) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
226 activate) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
227 "Invoke tramp-vc-do-command for tramp files." |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
228 (let ((file (symbol-value 'file))) ;pacify byte-compiler |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
229 (if (or (and (stringp file) (tramp-tramp-file-p file)) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
230 (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name)))) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
231 (setq ad-return-value |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
232 (apply 'tramp-vc-do-command-new buffer okstatus command |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
233 file ;(or file (buffer-file-name)) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
234 flags)) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
235 ad-do-it))) |
45861 | 236 (defadvice vc-do-command |
237 (around tramp-advice-vc-do-command | |
68335
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
238 (buffer okstatus command file last &rest flags) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
239 activate) |
45861 | 240 "Invoke tramp-vc-do-command for tramp files." |
68335
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
241 (let ((file (symbol-value 'file))) ;pacify byte-compiler |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
242 (if (or (and (stringp file) (tramp-tramp-file-p file)) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
243 (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name)))) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
244 (setq ad-return-value |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
245 (apply 'tramp-vc-do-command buffer okstatus command |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
246 (or file (buffer-file-name)) last flags)) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
247 ad-do-it)))) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
248 |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
249 (add-hook 'tramp-unload-hook |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
250 '(lambda () (ad-unadvise 'vc-do-command)))) |
45861 | 251 |
252 | |
253 ;; XEmacs uses this to do some of its work. Like vc-do-command, we | |
254 ;; need to enhance it to make VC work via TRAMP-mode. | |
255 ;; | |
256 ;; Like the previous function, this is a cut-and-paste job from the VC | |
257 ;; file. It's based on the vc-do-command code. | |
258 ;; CCC: this isn't used in Emacs 21, so do as before. | |
259 (defun tramp-vc-simple-command (okstatus command file &rest args) | |
260 ;; Simple version of vc-do-command, for use in vc-hooks only. | |
261 ;; Don't switch to the *vc-info* buffer before running the | |
262 ;; command, because that would change its default directory | |
263 (save-match-data | |
56460
9459300bf43b
Sync with Tramp 2.0.43.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
55420
diff
changeset
|
264 (let* ((v (tramp-dissect-file-name (expand-file-name file))) |
45861 | 265 (multi-method (tramp-file-name-multi-method v)) |
266 (method (tramp-file-name-method v)) | |
267 (user (tramp-file-name-user v)) | |
268 (host (tramp-file-name-host v)) | |
49995
a0e8a85259ed
Version 2.0.30 released.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
49598
diff
changeset
|
269 (localname (tramp-file-name-localname v))) |
45861 | 270 (save-excursion (set-buffer (get-buffer-create "*vc-info*")) |
271 (erase-buffer)) | |
272 (let ((exec-path (append vc-path exec-path)) exec-status | |
273 ;; Add vc-path to PATH for the execution of this command. | |
274 (process-environment | |
275 (cons (concat "PATH=" (getenv "PATH") | |
276 path-separator | |
277 (mapconcat 'identity vc-path path-separator)) | |
278 process-environment))) | |
279 ;; Call the actual process. See tramp-vc-do-command for discussion of | |
280 ;; why this does both (save-window-excursion) and (save-excursion). | |
281 ;; | |
282 ;; As a note, I don't think that the process-environment stuff above | |
283 ;; has any effect on the remote system. This is a hard one though as | |
284 ;; there is no real reason to expect local and remote paths to be | |
285 ;; identical... | |
286 ;; | |
287 ;; Daniel Pittman <daniel@danann.net> | |
288 (save-excursion | |
289 (save-window-excursion | |
290 ;; Actually execute remote command | |
59582
92796330257a
Sync with Tramp 2.0.47.
Michael Albinus <michael.albinus@gmx.de>
parents:
57653
diff
changeset
|
291 ;; `shell-command' cannot be used; it isn't magic in XEmacs. |
92796330257a
Sync with Tramp 2.0.47.
Michael Albinus <michael.albinus@gmx.de>
parents:
57653
diff
changeset
|
292 (tramp-handle-shell-command |
45861 | 293 (mapconcat 'tramp-shell-quote-argument |
49995
a0e8a85259ed
Version 2.0.30 released.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
49598
diff
changeset
|
294 (append (list command) args (list localname)) " ") |
45861 | 295 (get-buffer-create"*vc-info*")) |
296 ;(tramp-wait-for-output) | |
297 ;; Get status from command | |
298 (tramp-send-command multi-method method user host "echo $?") | |
299 (tramp-wait-for-output) | |
300 (setq exec-status (read (current-buffer))) | |
301 (message "Command %s returned status %d." command exec-status))) | |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59582
diff
changeset
|
302 |
48973
09acf3f65bb5
* net/tramp*.el: Sync with upstream version 2.0.28. Bugfixes.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
45861
diff
changeset
|
303 ;; Maybe okstatus can be `async' here. But then, maybe the |
09acf3f65bb5
* net/tramp*.el: Sync with upstream version 2.0.28. Bugfixes.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
45861
diff
changeset
|
304 ;; async thing is new in Emacs 21, but this function is only |
09acf3f65bb5
* net/tramp*.el: Sync with upstream version 2.0.28. Bugfixes.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
45861
diff
changeset
|
305 ;; used in Emacs 20. |
45861 | 306 (cond ((> exec-status okstatus) |
307 (switch-to-buffer (get-file-buffer file)) | |
308 (shrink-window-if-larger-than-buffer | |
309 (display-buffer "*vc-info*")) | |
310 (error "Couldn't find version control information"))) | |
311 exec-status)))) | |
312 | |
313 ;; This function does not exist any more in Emacs-21's VC | |
314 (defadvice vc-simple-command | |
315 (around tramp-advice-vc-simple-command | |
316 (okstatus command file &rest args) | |
317 activate) | |
318 "Invoke tramp-vc-simple-command for tramp files." | |
319 (let ((file (symbol-value 'file))) ;pacify byte-compiler | |
320 (if (or (and (stringp file) (tramp-tramp-file-p file)) | |
321 (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name)))) | |
322 (setq ad-return-value | |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59582
diff
changeset
|
323 (apply 'tramp-vc-simple-command okstatus command |
45861 | 324 (or file (buffer-file-name)) args)) |
325 ad-do-it))) | |
326 | |
68335
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
327 (add-hook 'tramp-unload-hook |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
328 '(lambda () (ad-unadvise 'vc-simple-command))) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
329 |
45861 | 330 |
331 ;; `vc-workfile-unchanged-p' | |
332 ;; This function does not deal well with remote files, so we do the | |
333 ;; same as for `vc-do-command'. | |
334 | |
335 ;; `vc-workfile-unchanged-p' checks the modification time, we cannot | |
336 ;; do that for remote files, so here's a version which relies on diff. | |
337 ;; CCC: this one probably works for Emacs 21, too. | |
338 (defun tramp-vc-workfile-unchanged-p | |
339 (filename &optional want-differences-if-changed) | |
340 (if (fboundp 'vc-backend-diff) | |
341 ;; Old VC. Call `vc-backend-diff'. | |
342 (let ((status (funcall (symbol-function 'vc-backend-diff) | |
343 filename nil nil | |
344 (not want-differences-if-changed)))) | |
345 (zerop status)) | |
346 ;; New VC. Call `vc-default-workfile-unchanged-p'. | |
55420
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
347 (funcall (symbol-function 'vc-default-workfile-unchanged-p) |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
348 (vc-backend filename) filename))) |
45861 | 349 |
350 (defadvice vc-workfile-unchanged-p | |
351 (around tramp-advice-vc-workfile-unchanged-p | |
352 (filename &optional want-differences-if-changed) | |
353 activate) | |
354 "Invoke tramp-vc-workfile-unchanged-p for tramp files." | |
355 (if (and (stringp filename) | |
356 (tramp-tramp-file-p filename) | |
357 (not | |
358 (let ((v (tramp-dissect-file-name filename))) | |
51968
e4c4c45ea013
Tramp 2.0.36 released.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
49995
diff
changeset
|
359 ;; The following check is probably to test whether |
e4c4c45ea013
Tramp 2.0.36 released.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
49995
diff
changeset
|
360 ;; file-attributes returns correct last modification |
e4c4c45ea013
Tramp 2.0.36 released.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
49995
diff
changeset
|
361 ;; times. This check needs to be changed. |
45861 | 362 (tramp-get-remote-perl (tramp-file-name-multi-method v) |
363 (tramp-file-name-method v) | |
364 (tramp-file-name-user v) | |
365 (tramp-file-name-host v))))) | |
366 (setq ad-return-value | |
367 (tramp-vc-workfile-unchanged-p filename want-differences-if-changed)) | |
368 ad-do-it)) | |
369 | |
68335
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
370 (add-hook 'tramp-unload-hook |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
371 '(lambda () (ad-unadvise 'vc-workfile-unchanged-p))) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
372 |
45861 | 373 |
374 ;; Redefine a function from vc.el -- allow tramp files. | |
375 ;; `save-match-data' seems not to be required -- it isn't in | |
376 ;; the original version, either. | |
377 ;; CCC: this might need some work -- how does the Emacs 21 version | |
378 ;; work, anyway? Does it work over ange-ftp? Hm. | |
379 (if (not (fboundp 'vc-backend-checkout)) | |
380 () ;; our replacement won't work and is unnecessary anyway | |
381 (defun vc-checkout (filename &optional writable rev) | |
382 "Retrieve a copy of the latest version of the given file." | |
383 ;; If ftp is on this system and the name matches the ange-ftp format | |
384 ;; for a remote file, the user is trying something that won't work. | |
385 (funcall (symbol-function 'vc-backend-checkout) filename writable rev) | |
386 (vc-resynch-buffer filename t t)) | |
387 ) | |
388 | |
389 | |
390 ;; Do we need to advise the vc-user-login-name function anyway? | |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59582
diff
changeset
|
391 ;; This will return the correct login name for the owner of a |
45861 | 392 ;; file. It does not deal with the default remote user name... |
393 ;; | |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59582
diff
changeset
|
394 ;; That is, when vc calls (vc-user-login-name), we return the |
45861 | 395 ;; local login name, something that may be different to the remote |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59582
diff
changeset
|
396 ;; default. |
45861 | 397 ;; |
398 ;; The remote VC operations will occur as the user that we logged | |
399 ;; in with however - not always the same as the local user. | |
400 ;; | |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59582
diff
changeset
|
401 ;; In the end, I did advise the function. This is because, well, |
45861 | 402 ;; the thing didn't work right otherwise ;) |
403 ;; | |
404 ;; Daniel Pittman <daniel@danann.net> | |
405 | |
406 (defun tramp-handle-vc-user-login-name (&optional uid) | |
407 "Return the default user name on the remote machine. | |
408 Whenever VC calls this function, `file' is bound to the file name | |
409 in question. If no uid is provided or the uid is equal to the uid | |
410 owning the file, then we return the user name given in the file name. | |
411 | |
412 This should only be called when `file' is bound to the | |
413 filename we are thinking about..." | |
414 ;; Pacify byte-compiler; this symbol is bound in the calling | |
415 ;; function. CCC: Maybe it would be better to move the | |
416 ;; boundness-checking into this function? | |
55420
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
417 (let* ((file (symbol-value 'file)) |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
418 (remote-uid |
60763
3ba8f94e9cfa
Sync with Tramp 2.0.48.
Michael Albinus <michael.albinus@gmx.de>
parents:
59996
diff
changeset
|
419 ;; With Emacs 22, `file-attributes' has got an optional parameter |
55420
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
420 ;; ID-FORMAT. Handle this case backwards compatible. |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
421 (if (and (functionp 'subr-arity) |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
422 (= 2 (cdr (funcall (symbol-function 'subr-arity) |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
423 (symbol-function 'file-attributes))))) |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
424 (nth 2 (file-attributes file 'integer)) |
c44f9de543e3
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
53206
diff
changeset
|
425 (nth 2 (file-attributes file))))) |
53206
0c19f1a19b2b
(tramp-chunksize): Extend docstring. Suggested by
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
52401
diff
changeset
|
426 (if (and uid (/= uid remote-uid)) |
45861 | 427 (error "tramp-handle-vc-user-login-name cannot map a uid to a name") |
56460
9459300bf43b
Sync with Tramp 2.0.43.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
55420
diff
changeset
|
428 (let* ((v (tramp-dissect-file-name (expand-file-name file))) |
45861 | 429 (u (tramp-file-name-user v))) |
430 (cond ((stringp u) u) | |
431 ((vectorp u) (elt u (1- (length u)))) | |
432 ((null u) (user-login-name)) | |
433 (t (error "tramp-handle-vc-user-login-name cannot cope!"))))))) | |
434 | |
435 | |
68385
774d8922e2c3
(vc-user-login-name): Comment out defadvice, it is no longer
André Spiegel <spiegel@gnu.org>
parents:
68335
diff
changeset
|
436 ;; The following defadvice is no longer necessary after changes in VC |
774d8922e2c3
(vc-user-login-name): Comment out defadvice, it is no longer
André Spiegel <spiegel@gnu.org>
parents:
68335
diff
changeset
|
437 ;; on 2006-01-25, Andre. |
774d8922e2c3
(vc-user-login-name): Comment out defadvice, it is no longer
André Spiegel <spiegel@gnu.org>
parents:
68335
diff
changeset
|
438 |
78887
8faf94b6c420
* net/tramp.el (tramp-completion-mode-p): Rename from
Michael Albinus <michael.albinus@gmx.de>
parents:
78230
diff
changeset
|
439 ;; That means either GNU Emacs >= 22 or the "new vc" package from XEmacs |
8faf94b6c420
* net/tramp.el (tramp-completion-mode-p): Rename from
Michael Albinus <michael.albinus@gmx.de>
parents:
78230
diff
changeset
|
440 ;; packages collection; as of 2007-09-06, test for availability of |
8faf94b6c420
* net/tramp.el (tramp-completion-mode-p): Rename from
Michael Albinus <michael.albinus@gmx.de>
parents:
78230
diff
changeset
|
441 ;; `vc-find-version' works for both of those cases. |
8faf94b6c420
* net/tramp.el (tramp-completion-mode-p): Rename from
Michael Albinus <michael.albinus@gmx.de>
parents:
78230
diff
changeset
|
442 (unless (fboundp 'vc-find-version) |
68423
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
443 (defadvice vc-user-login-name |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
444 (around tramp-vc-user-login-name activate) |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
445 "Support for files on remote machines accessed by TRAMP." |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
446 ;; We rely on the fact that `file' is bound when this is called. |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
447 ;; This appears to be the case everywhere in vc.el and vc-hooks.el |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
448 ;; as of Emacs 20.5. |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
449 ;; |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
450 ;; With Emacs 22, the definition of `vc-user-login-name' has been |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
451 ;; changed. It doesn't need to be adviced any longer. |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
452 (let ((file (when (boundp 'file) |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
453 (symbol-value 'file)))) ;pacify byte-compiler |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
454 (or (and (stringp file) |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
455 (tramp-tramp-file-p file) ; tramp file |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
456 (setq ad-return-value |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
457 (save-match-data |
78887
8faf94b6c420
* net/tramp.el (tramp-completion-mode-p): Rename from
Michael Albinus <michael.albinus@gmx.de>
parents:
78230
diff
changeset
|
458 (tramp-handle-vc-user-login-name (ad-get-arg 0))))) ; get the owner name |
68423
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
459 ad-do-it))) ; else call the original |
45861 | 460 |
68423
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
461 (add-hook 'tramp-unload-hook |
927f1c4f43d8
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
Michael Albinus <michael.albinus@gmx.de>
parents:
68385
diff
changeset
|
462 '(lambda () (ad-unadvise 'vc-user-login-name)))) |
68335
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
463 |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59582
diff
changeset
|
464 |
45861 | 465 ;; Determine the name of the user owning a file. |
466 (defun tramp-file-owner (filename) | |
467 "Return who owns FILE (user name, as a string)." | |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59582
diff
changeset
|
468 (let ((v (tramp-dissect-file-name |
56460
9459300bf43b
Sync with Tramp 2.0.43.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
55420
diff
changeset
|
469 (expand-file-name filename)))) |
9459300bf43b
Sync with Tramp 2.0.43.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
55420
diff
changeset
|
470 (if (not (file-exists-p filename)) |
45861 | 471 nil ; file cannot be opened |
472 ;; file exists, find out stuff | |
473 (save-excursion | |
474 (tramp-send-command | |
475 (tramp-file-name-multi-method v) (tramp-file-name-method v) | |
476 (tramp-file-name-user v) (tramp-file-name-host v) | |
477 (format "%s -Lld %s" | |
478 (tramp-get-ls-command (tramp-file-name-multi-method v) | |
479 (tramp-file-name-method v) | |
480 (tramp-file-name-user v) | |
481 (tramp-file-name-host v)) | |
49995
a0e8a85259ed
Version 2.0.30 released.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
49598
diff
changeset
|
482 (tramp-shell-quote-argument (tramp-file-name-localname v)))) |
45861 | 483 (tramp-wait-for-output) |
484 ;; parse `ls -l' output ... | |
485 ;; ... file mode flags | |
486 (read (current-buffer)) | |
487 ;; ... number links | |
488 (read (current-buffer)) | |
489 ;; ... uid (as a string) | |
490 (symbol-name (read (current-buffer))))))) | |
491 | |
492 ;; Wire ourselves into the VC infrastructure... | |
493 ;; This function does not exist any more in Emacs-21's VC | |
494 ;; CCC: it appears that no substitute is needed for Emacs 21. | |
495 (defadvice vc-file-owner | |
496 (around tramp-vc-file-owner activate) | |
497 "Support for files on remote machines accessed by TRAMP." | |
498 (let ((filename (ad-get-arg 0))) | |
499 (or (and (tramp-file-name-p filename) ; tramp file | |
500 (setq ad-return-value | |
501 (save-match-data | |
502 (tramp-file-owner filename)))) ; get the owner name | |
503 ad-do-it))) ; else call the original | |
504 | |
68335
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
505 (add-hook 'tramp-unload-hook |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
506 '(lambda () (ad-unadvise 'vc-file-owner))) |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
507 |
45861 | 508 |
509 ;; We need to make the version control software backend version | |
510 ;; information local to the current buffer. This is because each TRAMP | |
511 ;; buffer can (theoretically) have a different VC version and I am | |
512 ;; *way* too lazy to try and push the correct value into each new | |
513 ;; buffer. | |
514 ;; | |
515 ;; Remote VC costs will just have to be paid, at least for the moment. | |
516 ;; Well, at least, they will right until I feel guilty about doing a | |
517 ;; botch job here and fix it. :/ | |
518 ;; | |
519 ;; Daniel Pittman <daniel@danann.net> | |
520 ;; CCC: this is probably still needed for Emacs 21. | |
521 (defun tramp-vc-setup-for-remote () | |
522 "Make the backend release variables buffer local. | |
523 This makes remote VC work correctly at the cost of some processing time." | |
524 (when (and (buffer-file-name) | |
525 (tramp-tramp-file-p (buffer-file-name))) | |
526 (make-local-variable 'vc-rcs-release) | |
527 (setq vc-rcs-release nil))) | |
68335
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
528 |
45861 | 529 (add-hook 'find-file-hooks 'tramp-vc-setup-for-remote t) |
68335
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
530 (add-hook 'tramp-unload-hook |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
531 '(lambda () |
118ceefc8263
Sync with Tramp 2.0.52.
Michael Albinus <michael.albinus@gmx.de>
parents:
64701
diff
changeset
|
532 (remove-hook 'find-file-hooks 'tramp-vc-setup-for-remote))) |
45861 | 533 |
534 ;; No need to load this again if anyone asks. | |
535 (provide 'tramp-vc) | |
536 | |
52401 | 537 ;;; arch-tag: 27cc42ce-da19-468d-ad5c-a2690558db60 |
45861 | 538 ;;; tramp-vc.el ends here |