aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKai Großjohann2004-05-07 21:21:04 +0000
committerKai Großjohann2004-05-07 21:21:04 +0000
commitdfbd99133b63a74963df4f3a0d37e831f6797cdb (patch)
tree73b3c280b7e4d25daf3d49b185d8bdd0923a7c09
parent38c65fca8d8b18246f0fe601a25cb0138bd89e0b (diff)
downloademacs-dfbd99133b63a74963df4f3a0d37e831f6797cdb.tar.gz
emacs-dfbd99133b63a74963df4f3a0d37e831f6797cdb.zip
2004-05-07 Kai Grossjohann <kai@emptydomain.de>
Version 2.0.40 of Tramp released. 2004-04-25 Michael Albinus <Michael.Albinus@alcatel.de> Complete rework, based on review by Karl Berry <karl@gnu.org>. * tramp.texi (Auto-save and Backup): Explain exploitation of new variables `tramp-backup-directory-alist' and `tramp-bkup-backup-directory-info'. (Overview, Connection types) (External transfer methods, Default Method) (Windows setup hints): Remove restriction of password entering with external methods. (Auto-save and Backup): Make file name example (X)Emacs neutral. In case of XEmacs, `bkup-backup-directory-info' and `auto-save-directory' must be used. (Frequently Asked Questions): Use "MS Windows NT/2000/XP" (not only "NT"). Remove doubled entry "What kinds of systems does @tramp{} work on". (tramp): Macro removed. (Obtaining Tramp): Flag removed from title. (all): "tramp-" and "-" removed from flag names. Flags `tramp' and `trampver' used properly. Flag `tramp-inst' replaced by `installchapter'. Installation related text adapted.
-rw-r--r--man/ChangeLog26
-rw-r--r--man/tramp.texi692
-rw-r--r--man/trampver.texi64
3 files changed, 433 insertions, 349 deletions
diff --git a/man/ChangeLog b/man/ChangeLog
index a76fe95fb7d..92211707081 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,29 @@
12004-05-07 Kai Grossjohann <kai@emptydomain.de>
2
3 Version 2.0.40 of Tramp released.
4
52004-04-25 Michael Albinus <Michael.Albinus@alcatel.de>
6
7 Complete rework, based on review by Karl Berry <karl@gnu.org>.
8
9 * tramp.texi (Auto-save and Backup): Explain exploitation of new
10 variables `tramp-backup-directory-alist' and
11 `tramp-bkup-backup-directory-info'. (Overview, Connection types)
12 (External transfer methods, Default Method)
13 (Windows setup hints): Remove restriction of password entering
14 with external methods.
15 (Auto-save and Backup): Make file name example
16 (X)Emacs neutral. In case of XEmacs, `bkup-backup-directory-info'
17 and `auto-save-directory' must be used.
18 (Frequently Asked Questions): Use "MS Windows NT/2000/XP" (not
19 only "NT"). Remove doubled entry "What kinds of systems does
20 @tramp{} work on".
21 (tramp): Macro removed.
22 (Obtaining Tramp): Flag removed from title.
23 (all): "tramp-" and "-" removed from flag names. Flags `tramp'
24 and `trampver' used properly. Flag `tramp-inst' replaced by
25 `installchapter'. Installation related text adapted.
26
12004-05-04 Jason Rumney <jasonr@gnu.org> 272004-05-04 Jason Rumney <jasonr@gnu.org>
2 28
3 * makefile.w32-in: Revert last change 29 * makefile.w32-in: Revert last change
diff --git a/man/tramp.texi b/man/tramp.texi
index 7e21b9c691f..ebba03d6260 100644
--- a/man/tramp.texi
+++ b/man/tramp.texi
@@ -17,16 +17,11 @@
17 17
18@include trampver.texi 18@include trampver.texi
19 19
20@c Macro to make formatting of the tramp program name consistent.
21@macro tramp
22@sc{tramp}
23@end macro
24
25@c Macros for formatting a filename. 20@c Macros for formatting a filename.
26@c trampfn is for a full filename, trampfnmhp means method, host, localname 21@c trampfn is for a full filename, trampfnmhp means method, host, localname
27@c were given, and so on. 22@c were given, and so on.
28@macro trampfn(method, user, host, localname) 23@macro trampfn(method, user, host, localname)
29@value{tramp-prefix}@value{method}@value{user}@@@value{host}@value{tramp-postfix}@value{localname} 24@value{prefix}@value{method}@value{user}@@@value{host}@value{postfix}@value{localname}
30@end macro 25@end macro
31 26
32@copying 27@copying
@@ -54,16 +49,16 @@ license to the document, as described in section 6 of the license.
54@end copying 49@end copying
55 50
56@c Entries for @command{install-info} to use 51@c Entries for @command{install-info} to use
57@dircategory @value{emacs-name} 52@dircategory @value{emacsname}
58@direntry 53@direntry
59* TRAMP: (tramp). Transparent Remote Access, Multiple Protocol 54* TRAMP: (tramp). Transparent Remote Access, Multiple Protocol
60 @value{emacs-name} remote file access via rsh and rcp. 55 @value{emacsname} remote file access via rsh and rcp.
61@end direntry 56@end direntry
62 57
63@tex 58@tex
64 59
65@titlepage 60@titlepage
66@title @tramp{} version @trampver{} User Manual 61@title @value{tramp} version @value{trampver} User Manual
67 62
68@author by Daniel Pittman 63@author by Daniel Pittman
69@author based on documentation by Kai Gro@ss{}johann 64@author based on documentation by Kai Gro@ss{}johann
@@ -78,17 +73,17 @@ license to the document, as described in section 6 of the license.
78 73
79@ifnottex 74@ifnottex
80@node Top, Overview, (dir), (dir) 75@node Top, Overview, (dir), (dir)
81@top @tramp{} version @trampver{} User Manual 76@top @value{tramp} version @value{trampver} User Manual
82 77
83This file documents @tramp{} version @trampver{}, a remote file 78This file documents @value{tramp} version @value{trampver}, a remote file
84editing package for @value{emacs-name}. 79editing package for @value{emacsname}.
85 80
86@tramp{} stands for `Transparent Remote (file) Access, Multiple 81@value{tramp} stands for `Transparent Remote (file) Access, Multiple
87Protocol'. This package provides remote file editing, similar to 82Protocol'. This package provides remote file editing, similar to
88@value{ftp-package-name}. 83@value{ftppackagename}.
89 84
90The difference is that @value{ftp-package-name} uses FTP to transfer 85The difference is that @value{ftppackagename} uses FTP to transfer
91files between the local and the remote host, whereas @tramp{} uses a 86files between the local and the remote host, whereas @value{tramp} uses a
92combination of @command{rsh} and @command{rcp} or other work-alike 87combination of @command{rsh} and @command{rcp} or other work-alike
93programs, such as @command{ssh}/@command{scp}. 88programs, such as @command{ssh}/@command{scp}.
94 89
@@ -96,27 +91,35 @@ You can find the latest version of this document on the web at
96@uref{http://www.freesoftware.fsf.org/tramp/}. 91@uref{http://www.freesoftware.fsf.org/tramp/}.
97 92
98@c Pointer to the other Emacs flavor is necessary only in case of 93@c Pointer to the other Emacs flavor is necessary only in case of
99@c standalone installation. Text taken from trampinst.texi. 94@c standalone installation.
100@ifset tramp-inst 95@ifset installchapter
101@otherflavor{} 96The manual has been generated for @value{emacsname}.
97@ifinfo
98If you want to read the info pages for @value{emacsothername}, you
99should read in @ref{Installation} how to create them.
100@end ifinfo
101@ifhtml
102If you're using the other Emacs flavour, you should read the
103@uref{@value{emacsotherfilename}, @value{emacsothername}} pages.
104@end ifhtml
102@end ifset 105@end ifset
103 106
104@ifhtml 107@ifhtml
105@ifset jamanual 108@ifset jamanual
106This manual is also available as a @uref{@value{japanese-manual}, 109This manual is also available as a @uref{@value{japanesemanual},
107Japanese translation}. 110Japanese translation}.
108@end ifset 111@end ifset
109 112
110The latest release of @tramp{} is available for 113The latest release of @value{tramp} is available for
111@uref{http://savannah.nongnu.org/download/tramp/, 114@uref{http://savannah.nongnu.org/download/tramp/, download}, or you
112download}, or you may see @ref{Obtaining @tramp{}} for more details, 115may see @ref{Obtaining Tramp} for more details, including the CVS
113including the CVS server details. 116server details.
114 117
115@tramp{} also has a @uref{http://savannah.nongnu.org/projects/tramp/, 118@value{tramp} also has a @uref{http://savannah.nongnu.org/projects/tramp/,
116Savannah Project Page}. 119Savannah Project Page}.
117@end ifhtml 120@end ifhtml
118 121
119There is a mailing list for @tramp{}, available at 122There is a mailing list for @value{tramp}, available at
120@email{tramp-devel@@mail.freesoftware.fsf.org}, and archived at 123@email{tramp-devel@@mail.freesoftware.fsf.org}, and archived at
121@uref{http://savannah.nongnu.org/mail/?group=tramp, Savannah Mail 124@uref{http://savannah.nongnu.org/mail/?group=tramp, Savannah Mail
122Archive}. 125Archive}.
@@ -135,17 +138,17 @@ The Mail Archive}.
135@end ifnottex 138@end ifnottex
136 139
137@menu 140@menu
138* Overview:: What @tramp{} can and cannot do. 141* Overview:: What @value{tramp} can and cannot do.
139 142
140For the end user: 143For the end user:
141 144
142* Obtaining @tramp{}:: How to obtain @tramp{}. 145* Obtaining Tramp:: How to obtain @value{tramp}.
143* History:: History of @tramp{}. 146* History:: History of @value{tramp}.
144@ifset tramp-inst 147@ifset installchapter
145* Installation:: Installing @tramp{} with your @value{emacs-name}. 148* Installation:: Installing @value{tramp} with your @value{emacsname}.
146@end ifset 149@end ifset
147* Configuration:: Configuring @tramp{} for use. 150* Configuration:: Configuring @value{tramp} for use.
148* Usage:: An overview of the operation of @tramp{}. 151* Usage:: An overview of the operation of @value{tramp}.
149* Bug Reports:: Reporting Bugs and Problems. 152* Bug Reports:: Reporting Bugs and Problems.
150* Frequently Asked Questions:: Questions and answers from the mailing list. 153* Frequently Asked Questions:: Questions and answers from the mailing list.
151* Concept Index:: An item for each concept. 154* Concept Index:: An item for each concept.
@@ -159,16 +162,16 @@ For the developer:
159@detailmenu 162@detailmenu
160 --- The Detailed Node Listing --- 163 --- The Detailed Node Listing ---
161@c 164@c
162@ifset tramp-inst 165@ifset installchapter
163Installing @tramp{} with your @value{emacs-name} 166Installing @value{tramp} with your @value{emacsname}
164 167
165* Installation parameters:: Parameters in order to control installation. 168* Installation parameters:: Parameters in order to control installation.
166* Load paths:: How to plug-in @tramp{} into your environment. 169* Load paths:: How to plug-in @value{tramp} into your environment.
167* Japanese manual:: Japanese manual. 170* Japanese manual:: Japanese manual.
168 171
169@end ifset 172@end ifset
170 173
171Configuring @tramp{} for use 174Configuring @value{tramp} for use
172 175
173* Connection types:: Types of connections made to remote machines. 176* Connection types:: Types of connections made to remote machines.
174* Inline methods:: Inline methods. 177* Inline methods:: Inline methods.
@@ -178,14 +181,14 @@ Configuring @tramp{} for use
178* Customizing Methods:: Using Non-Standard Methods. 181* Customizing Methods:: Using Non-Standard Methods.
179* Customizing Completion:: Selecting config files for user/host name completion. 182* Customizing Completion:: Selecting config files for user/host name completion.
180* Password caching:: Reusing passwords for several connections. 183* Password caching:: Reusing passwords for several connections.
181* Remote Programs:: How @tramp{} finds and uses programs on the remote machine. 184* Remote Programs:: How @value{tramp} finds and uses programs on the remote machine.
182* Remote shell setup:: Remote shell setup hints. 185* Remote shell setup:: Remote shell setup hints.
183* Windows setup hints:: Issues with Cygwin ssh. 186* Windows setup hints:: Issues with Cygwin ssh.
184* Auto-save and Backup:: Auto-save and Backup. 187* Auto-save and Backup:: Auto-save and Backup.
185 188
186Using @tramp{} 189Using @value{tramp}
187 190
188* Filename Syntax:: @tramp{} filename conventions. 191* Filename Syntax:: @value{tramp} filename conventions.
189* Multi-hop filename syntax:: Multi-hop filename conventions. 192* Multi-hop filename syntax:: Multi-hop filename conventions.
190* Filename completion:: Filename completion. 193* Filename completion:: Filename completion.
191* Dired:: Dired. 194* Dired:: Dired.
@@ -211,10 +214,10 @@ How file names, directories and localnames are mangled and managed
211@end menu 214@end menu
212 215
213@node Overview 216@node Overview
214@chapter An overview of @tramp{} 217@chapter An overview of @value{tramp}
215@cindex overview 218@cindex overview
216 219
217After the installation of @tramp{} into your @value{emacs-name}, you 220After the installation of @value{tramp} into your @value{emacsname}, you
218will be able to access files on remote machines as though they were 221will be able to access files on remote machines as though they were
219local. Access to the remote file system for editing files, version 222local. Access to the remote file system for editing files, version
220control, and @command{dired} are transparently enabled. 223control, and @command{dired} are transparently enabled.
@@ -229,27 +232,26 @@ box, one of the more common uses of the package. This allows
229relatively secure access to machines, especially if @command{ftp} 232relatively secure access to machines, especially if @command{ftp}
230access is disabled. 233access is disabled.
231 234
232The majority of activity carried out by @tramp{} requires only that 235The majority of activity carried out by @value{tramp} requires only that
233the remote login is possible and is carried out at the terminal. In 236the remote login is possible and is carried out at the terminal. In
234order to access remote files @tramp{} needs to transfer their content 237order to access remote files @value{tramp} needs to transfer their content
235to the local machine temporarily. 238to the local machine temporarily.
236 239
237@tramp{} can transfer files between the machines in a variety of ways. 240@value{tramp} can transfer files between the machines in a variety of ways.
238The details are easy to select, depending on your needs and the 241The details are easy to select, depending on your needs and the
239machines in question. 242machines in question.
240 243
241The fastest transfer methods (for large files) rely on a remote file 244The fastest transfer methods (for large files) rely on a remote file
242transfer package such as @command{rcp}, @command{scp} or 245transfer package such as @command{rcp}, @command{scp} or
243@command{rsync}. The use of these methods is only possible if the 246@command{rsync}.
244file copy command does not ask for a password for the remote machine.
245 247
246If the remote copy methods are not suitable for you, @tramp{} also 248If the remote copy methods are not suitable for you, @value{tramp} also
247supports the use of encoded transfers directly through the shell. 249supports the use of encoded transfers directly through the shell.
248This requires that the @command{mimencode} or @command{uuencode} tools 250This requires that the @command{mimencode} or @command{uuencode} tools
249are available on the remote machine. These methods are generally 251are available on the remote machine. These methods are generally
250faster for small files. 252faster for small files.
251 253
252Within these limitations, @tramp{} is quite powerful. It is worth 254Within these limitations, @value{tramp} is quite powerful. It is worth
253noting that, as of the time of writing, it is far from a polished 255noting that, as of the time of writing, it is far from a polished
254end-user product. For a while yet you should expect to run into rough 256end-user product. For a while yet you should expect to run into rough
255edges and problems with the code now and then. 257edges and problems with the code now and then.
@@ -258,8 +260,8 @@ It is finished enough that the developers use it for day to day work but
258the installation and setup can be a little difficult to master, as can 260the installation and setup can be a little difficult to master, as can
259the terminology. 261the terminology.
260 262
261@tramp{} is still under active development and any problems you encounter, 263@value{tramp} is still under active development and any problems you encounter,
262trivial or major, should be reported to the @tramp{} developers. 264trivial or major, should be reported to the @value{tramp} developers.
263@xref{Bug Reports}. 265@xref{Bug Reports}.
264 266
265 267
@@ -269,65 +271,65 @@ trivial or major, should be reported to the @tramp{} developers.
269@cindex how it works 271@cindex how it works
270 272
271This section tries to explain what goes on behind the scenes when you 273This section tries to explain what goes on behind the scenes when you
272access a remote file through @tramp{}. 274access a remote file through @value{tramp}.
273 275
274Suppose you type @kbd{C-x C-f} and enter part of an @tramp{} file name, 276Suppose you type @kbd{C-x C-f} and enter part of an @value{tramp} file name,
275then hit @kbd{@key{TAB}} for completion. Suppose further that this is 277then hit @kbd{@key{TAB}} for completion. Suppose further that this is
276the first time that @tramp{} is invoked for the host in question. Here's 278the first time that @value{tramp} is invoked for the host in question. Here's
277what happens: 279what happens:
278 280
279@itemize 281@itemize
280@item 282@item
281@tramp{} discovers that it needs a connection to the host. So it 283@value{tramp} discovers that it needs a connection to the host. So it
282invokes @samp{telnet @var{host}} or @samp{rsh @var{host} -l 284invokes @samp{telnet @var{host}} or @samp{rsh @var{host} -l
283@var{user}} or a similar tool to connect to the remote host. 285@var{user}} or a similar tool to connect to the remote host.
284Communication with this process happens through an 286Communication with this process happens through an
285@value{emacs-name} buffer, that is, the output from the remote end 287@value{emacsname} buffer, that is, the output from the remote end
286goes into a buffer. 288goes into a buffer.
287 289
288@item 290@item
289The remote host may prompt for a login name (for @command{telnet}). The 291The remote host may prompt for a login name (for @command{telnet}). The
290login name is given in the file name, so @tramp{} sends the login name and 292login name is given in the file name, so @value{tramp} sends the login name and
291a newline. 293a newline.
292 294
293@item 295@item
294The remote host may prompt for a password or pass phrase (for 296The remote host may prompt for a password or pass phrase (for
295@command{rsh} or for @command{telnet} after sending the login name). 297@command{rsh} or for @command{telnet} after sending the login name).
296@tramp{} displays the prompt in the minibuffer, asking you for the 298@value{tramp} displays the prompt in the minibuffer, asking you for the
297password or pass phrase. 299password or pass phrase.
298 300
299You enter the password or pass phrase. @tramp{} sends it to the remote 301You enter the password or pass phrase. @value{tramp} sends it to the remote
300host, followed by a newline. 302host, followed by a newline.
301 303
302@item 304@item
303@tramp{} now waits for the shell prompt or for a message that the login 305@value{tramp} now waits for the shell prompt or for a message that the login
304failed. 306failed.
305 307
306If @tramp{} sees neither of them after a certain period of time (a minute, 308If @value{tramp} sees neither of them after a certain period of time (a minute,
307say), then it issues an error message saying that it couldn't find the 309say), then it issues an error message saying that it couldn't find the
308remote shell prompt and shows you what the remote host has sent. 310remote shell prompt and shows you what the remote host has sent.
309 311
310If @tramp{} sees a @samp{login failed} message, it tells you so, 312If @value{tramp} sees a @samp{login failed} message, it tells you so,
311aborts the login attempt and allows you to try again. 313aborts the login attempt and allows you to try again.
312 314
313@item 315@item
314Suppose that the login was successful and @tramp{} sees the shell prompt 316Suppose that the login was successful and @value{tramp} sees the shell prompt
315from the remote host. Now @tramp{} invokes @command{/bin/sh} because 317from the remote host. Now @value{tramp} invokes @command{/bin/sh} because
316Bourne shells and C shells have different command 318Bourne shells and C shells have different command
317syntaxes.@footnote{Invoking @command{/bin/sh} will fail if your login 319syntaxes.@footnote{Invoking @command{/bin/sh} will fail if your login
318shell doesn't recognize @samp{exec /bin/sh} as a valid command. 320shell doesn't recognize @samp{exec /bin/sh} as a valid command.
319Maybe you use the Scheme shell @command{scsh}@dots{}} 321Maybe you use the Scheme shell @command{scsh}@dots{}}
320 322
321After the Bourne shell has come up, @tramp{} sends a few commands to 323After the Bourne shell has come up, @value{tramp} sends a few commands to
322ensure a good working environment. It turns off echoing, it sets the 324ensure a good working environment. It turns off echoing, it sets the
323shell prompt, and a few other things. 325shell prompt, and a few other things.
324 326
325@item 327@item
326Now the remote shell is up and it good working order. Remember, what 328Now the remote shell is up and it good working order. Remember, what
327was supposed to happen is that @tramp{} tries to find out what files exist 329was supposed to happen is that @value{tramp} tries to find out what files exist
328on the remote host so that it can do filename completion. 330on the remote host so that it can do filename completion.
329 331
330So, @tramp{} basically issues @command{cd} and @command{ls} commands and 332So, @value{tramp} basically issues @command{cd} and @command{ls} commands and
331also sometimes @command{echo} with globbing. Another command that is 333also sometimes @command{echo} with globbing. Another command that is
332often used is @command{test} to find out whether a file is writable or a 334often used is @command{test} to find out whether a file is writable or a
333directory or the like. The output of each command is parsed for the 335directory or the like. The output of each command is parsed for the
@@ -339,14 +341,14 @@ C-f}, a full file name and hit @kbd{@key{RET}}. Now comes the time to
339transfer the file contents from the remote host to the local host so 341transfer the file contents from the remote host to the local host so
340that you can edit them. 342that you can edit them.
341 343
342See above for an explanation of how @tramp{} transfers the file contents. 344See above for an explanation of how @value{tramp} transfers the file contents.
343 345
344For inline transfers, @tramp{} issues a command like @samp{mimencode -b 346For inline transfers, @value{tramp} issues a command like @samp{mimencode -b
345/path/to/remote/file}, waits until the output has accumulated in the 347/path/to/remote/file}, waits until the output has accumulated in the
346buffer that's used for communication, then decodes that output to 348buffer that's used for communication, then decodes that output to
347produce the file contents. 349produce the file contents.
348 350
349For out-of-band transfers, @tramp{} issues a command like the following: 351For out-of-band transfers, @value{tramp} issues a command like the following:
350@example 352@example
351rcp user@@host:/path/to/remote/file /tmp/tramp.4711 353rcp user@@host:/path/to/remote/file /tmp/tramp.4711
352@end example 354@end example
@@ -359,35 +361,35 @@ behind the scenes. (Unless you have read this section, that is.) When
359you are finished, you type @kbd{C-x C-s} to save the buffer. 361you are finished, you type @kbd{C-x C-s} to save the buffer.
360 362
361@item 363@item
362Again, @tramp{} transfers the file contents to the remote host either 364Again, @value{tramp} transfers the file contents to the remote host either
363inline or out-of-band. This is the reverse of what happens when reading 365inline or out-of-band. This is the reverse of what happens when reading
364the file. 366the file.
365 367
366@end itemize 368@end itemize
367 369
368I hope this has provided you with a basic overview of what happens 370I hope this has provided you with a basic overview of what happens
369behind the scenes when you open a file with @tramp{}. 371behind the scenes when you open a file with @value{tramp}.
370 372
371 373
372@c For the end user 374@c For the end user
373@node Obtaining @tramp{} 375@node Obtaining Tramp
374@chapter Obtaining @tramp{}. 376@chapter Obtaining Tramp.
375@cindex obtaining @tramp{} 377@cindex obtaining Tramp
376 378
377@tramp{} is freely available on the Internet and the latest release 379@value{tramp} is freely available on the Internet and the latest release
378may be downloaded from 380may be downloaded from
379@uref{http://savannah.nongnu.org/download/tramp/}. This 381@uref{http://savannah.nongnu.org/download/tramp/}. This
380release includes the full documentation and code for @tramp{}, 382release includes the full documentation and code for @value{tramp},
381suitable for installation. But Emacs (21.4 or later) includes 383suitable for installation. But Emacs (21.4 or later) includes
382@tramp{} already, and there is a @tramp{} package for XEmacs, as well. 384@value{tramp} already, and there is a @value{tramp} package for XEmacs, as well.
383So maybe it is easier to just use those. But if you want the bleeding 385So maybe it is easier to just use those. But if you want the bleeding
384edge, read on@dots{...} 386edge, read on@dots{...}
385 387
386For the especially brave, @tramp{} is available from CVS. The CVS 388For the especially brave, @value{tramp} is available from CVS. The CVS
387version is the latest version of the code and may contain incomplete 389version is the latest version of the code and may contain incomplete
388features or new issues. Use these versions at your own risk. 390features or new issues. Use these versions at your own risk.
389 391
390Instructions for obtaining the latest development version of @tramp{} 392Instructions for obtaining the latest development version of @value{tramp}
391from CVS can be found by going to the Savannah project page at the 393from CVS can be found by going to the Savannah project page at the
392following URL and then clicking on the CVS link in the navigation bar 394following URL and then clicking on the CVS link in the navigation bar
393at the top. 395at the top.
@@ -399,18 +401,18 @@ at the top.
399Or follow the example session below: 401Or follow the example session below:
400 402
401@example 403@example
402] @strong{cd ~/@value{emacs-dir}} 404] @strong{cd ~/@value{emacsdir}}
403] @strong{export CVS_RSH="ssh"} 405] @strong{export CVS_RSH="ssh"}
404] @strong{cvs -z3 -d:ext:anoncvs@@savannah.nongnu.org:/cvsroot/tramp co tramp} 406] @strong{cvs -z3 -d:ext:anoncvs@@savannah.nongnu.org:/cvsroot/tramp co tramp}
405@end example 407@end example
406 408
407@noindent 409@noindent
408You should now have a directory @file{~/@value{emacs-dir}/tramp} 410You should now have a directory @file{~/@value{emacsdir}/tramp}
409containing the latest version of @tramp{}. You can fetch the latest 411containing the latest version of @value{tramp}. You can fetch the latest
410updates from the repository by issuing the command: 412updates from the repository by issuing the command:
411 413
412@example 414@example
413] @strong{cd ~/@value{emacs-dir}/tramp} 415] @strong{cd ~/@value{emacsdir}/tramp}
414] @strong{export CVS_RSH="ssh"} 416] @strong{export CVS_RSH="ssh"}
415] @strong{cvs update -d} 417] @strong{cvs update -d}
416@end example 418@end example
@@ -421,13 +423,13 @@ Once you've got updated files from the CVS repository, you need to run
421script: 423script:
422 424
423@example 425@example
424] @strong{cd ~/@value{emacs-dir}/tramp} 426] @strong{cd ~/@value{emacsdir}/tramp}
425] @strong{autoconf} 427] @strong{autoconf}
426@end example 428@end example
427 429
428 430
429@node History 431@node History
430@chapter History of @tramp{} 432@chapter History of @value{tramp}
431@cindex history 433@cindex history
432@cindex development history 434@cindex development history
433 435
@@ -435,31 +437,31 @@ Development was started end of November 1998. The package was called
435@file{rssh.el}, back then. It only provided one method to access a 437@file{rssh.el}, back then. It only provided one method to access a
436file, using @command{ssh} to log in to a remote host and using 438file, using @command{ssh} to log in to a remote host and using
437@command{scp} to transfer the file contents. After a while, the name 439@command{scp} to transfer the file contents. After a while, the name
438was changed to @file{rcp.el}, and now it's @tramp{}. Along the way, 440was changed to @file{rcp.el}, and now it's @value{tramp}. Along the way,
439many more methods for getting a remote shell and for transferring the 441many more methods for getting a remote shell and for transferring the
440file contents were added. Support for VC was added. 442file contents were added. Support for VC was added.
441 443
442The most recent addition of major features were the multi-hop methods 444The most recent addition of major features were the multi-hop methods
443added in April 2000 and the unification of @tramp{} and Ange-FTP 445added in April 2000 and the unification of @value{tramp} and Ange-FTP
444filenames in July 2002. 446filenames in July 2002.
445 447
446@c Installation chapter is necessary only in case of standalone 448@c Installation chapter is necessary only in case of standalone
447@c installation. Text taken from trampinst.texi. 449@c installation. Text taken from trampinst.texi.
448@ifset tramp-inst 450@ifset installchapter
449@installationchapter{} 451@include trampinst.texi
450@end ifset 452@end ifset
451 453
452@node Configuration 454@node Configuration
453@chapter Configuring @tramp{} for use 455@chapter Configuring @value{tramp} for use
454@cindex configuration 456@cindex configuration
455 457
456@cindex default configuration 458@cindex default configuration
457@tramp{} is (normally) fully functional when it is initially installed. 459@value{tramp} is (normally) fully functional when it is initially installed.
458It is initially configured to use the @command{ssh} program to connect 460It is initially configured to use the @command{ssh} program to connect
459to the remote host and to use base64 or uu encoding to transfer the 461to the remote host and to use base64 or uu encoding to transfer the
460files through that shell connection. So in the easiest case, you just 462files through that shell connection. So in the easiest case, you just
461type @kbd{C-x C-f} and then enter the filename 463type @kbd{C-x C-f} and then enter the filename
462@file{@value{tramp-prefix}@var{user}@@@var{machine}@value{tramp-postfix}@var{/path/to.file}}. 464@file{@value{prefix}@var{user}@@@var{machine}@value{postfix}@var{/path/to.file}}.
463 465
464On some hosts, there are problems with opening a connection. These are 466On some hosts, there are problems with opening a connection. These are
465related to the behavior of the remote shell. See @xref{Remote shell 467related to the behavior of the remote shell. See @xref{Remote shell
@@ -467,7 +469,7 @@ setup}, for details on this.
467 469
468If you do not wish to use these commands to connect to the remote 470If you do not wish to use these commands to connect to the remote
469host, you should change the default connection and transfer method 471host, you should change the default connection and transfer method
470that @tramp{} uses. There are several different methods that @tramp{} 472that @value{tramp} uses. There are several different methods that @value{tramp}
471can use to connect to remote machines and transfer files 473can use to connect to remote machines and transfer files
472(@pxref{Connection types}). 474(@pxref{Connection types}).
473 475
@@ -487,7 +489,7 @@ Method}.
487* Customizing Methods:: Using Non-Standard Methods. 489* Customizing Methods:: Using Non-Standard Methods.
488* Customizing Completion:: Selecting config files for user/host name completion. 490* Customizing Completion:: Selecting config files for user/host name completion.
489* Password caching:: Reusing passwords for several connections. 491* Password caching:: Reusing passwords for several connections.
490* Remote Programs:: How @tramp{} finds and uses programs on the remote machine. 492* Remote Programs:: How @value{tramp} finds and uses programs on the remote machine.
491* Remote shell setup:: Remote shell setup hints. 493* Remote shell setup:: Remote shell setup hints.
492* Windows setup hints:: Issues with Cygwin ssh. 494* Windows setup hints:: Issues with Cygwin ssh.
493* Auto-save and Backup:: Auto-save and Backup. 495* Auto-save and Backup:: Auto-save and Backup.
@@ -503,7 +505,7 @@ advantages and limitations. Both types of connection make use of a
503remote shell access program such as @command{rsh}, @command{ssh} or 505remote shell access program such as @command{rsh}, @command{ssh} or
504@command{telnet} to connect to the remote machine. 506@command{telnet} to connect to the remote machine.
505 507
506This connection is used to perform many of the operations that @tramp{} 508This connection is used to perform many of the operations that @value{tramp}
507requires to make the remote file system transparently accessible from 509requires to make the remote file system transparently accessible from
508the local machine. It is only when visiting files that the methods 510the local machine. It is only when visiting files that the methods
509differ. 511differ.
@@ -534,10 +536,10 @@ methods. While these methods do see better performance when actually
534transferring files, the overhead of the cryptographic negotiation at 536transferring files, the overhead of the cryptographic negotiation at
535startup may drown out the improvement in file transfer times. 537startup may drown out the improvement in file transfer times.
536 538
537External transfer methods do require that the remote copy command is not 539External transfer methods should be configured such a way that they
538interactive --- that is, the command does not prompt you for a password. 540don't require a password (with @command{ssh-agent}, or such alike).
539If you cannot perform remote copies without a password, you will need to 541If it isn't possible, you should consider @ref{Password caching},
540use an inline transfer method to work with @tramp{}. 542otherwise you will be prompted for a password every copy action.
541 543
542@cindex multi-hop methods 544@cindex multi-hop methods
543@cindex methods, multi-hop 545@cindex methods, multi-hop
@@ -553,7 +555,7 @@ connect to the outside world.
553@cindex inline methods 555@cindex inline methods
554@cindex methods, inline 556@cindex methods, inline
555 557
556The inline methods in @tramp{} are quite powerful and can work in 558The inline methods in @value{tramp} are quite powerful and can work in
557situations where you cannot use an external transfer program to connect. 559situations where you cannot use an external transfer program to connect.
558Inline methods are the only methods that work when connecting to the 560Inline methods are the only methods that work when connecting to the
559remote machine via telnet. (There are also strange inline methods which 561remote machine via telnet. (There are also strange inline methods which
@@ -561,20 +563,20 @@ allow you to transfer files between @emph{user identities} rather than
561hosts, see below.) 563hosts, see below.)
562 564
563These methods depend on the existence of a suitable encoding and 565These methods depend on the existence of a suitable encoding and
564decoding command on remote machine. Locally, @tramp{} may be able to 566decoding command on remote machine. Locally, @value{tramp} may be able to
565use features of @value{emacs-name} to decode and encode the files or 567use features of @value{emacsname} to decode and encode the files or
566it may require access to external commands to perform that task. 568it may require access to external commands to perform that task.
567 569
568@cindex uuencode 570@cindex uuencode
569@cindex mimencode 571@cindex mimencode
570@cindex base-64 encoding 572@cindex base-64 encoding
571@tramp{} checks the availability and usability of commands like 573@value{tramp} checks the availability and usability of commands like
572@command{mimencode} (part of the @command{metamail} package) or 574@command{mimencode} (part of the @command{metamail} package) or
573@command{uuencode} on the remote host. The first reliable command 575@command{uuencode} on the remote host. The first reliable command
574will be used. The search path can be customized, see @ref{Remote 576will be used. The search path can be customized, see @ref{Remote
575Programs}. 577Programs}.
576 578
577If both commands aren't available on the remote host, @tramp{} 579If both commands aren't available on the remote host, @value{tramp}
578transfers a small piece of Perl code to the remote host, and tries to 580transfers a small piece of Perl code to the remote host, and tries to
579apply it for encoding and decoding. 581apply it for encoding and decoding.
580 582
@@ -658,20 +660,20 @@ the remote host, this option uses @samp{ssh -t -t @var{host} -l
658@var{user} /bin/sh} to open a connection. This is useful for users 660@var{user} /bin/sh} to open a connection. This is useful for users
659where the normal login shell is set up to ask them a number of 661where the normal login shell is set up to ask them a number of
660questions when logging in. This procedure avoids these questions, and 662questions when logging in. This procedure avoids these questions, and
661just gives @tramp{} a more-or-less `standard' login shell to work 663just gives @value{tramp} a more-or-less `standard' login shell to work
662with. 664with.
663 665
664Note that this procedure does not eliminate questions asked by 666Note that this procedure does not eliminate questions asked by
665@command{ssh} itself. For example, @command{ssh} might ask ``Are you 667@command{ssh} itself. For example, @command{ssh} might ask ``Are you
666sure you want to continue connecting?'' if the host key of the remote 668sure you want to continue connecting?'' if the host key of the remote
667host is not known. @tramp{} does not know how to deal with such a 669host is not known. @value{tramp} does not know how to deal with such a
668question (yet), therefore you will need to make sure that you can log 670question (yet), therefore you will need to make sure that you can log
669in without such questions. 671in without such questions.
670 672
671This is also useful for Windows users where @command{ssh}, when 673This is also useful for Windows users where @command{ssh}, when
672invoked from an @value{emacs-name} buffer, tells them that it is not 674invoked from an @value{emacsname} buffer, tells them that it is not
673allocating a pseudo tty. When this happens, the login shell is wont 675allocating a pseudo tty. When this happens, the login shell is wont
674to not print any shell prompt, which confuses @tramp{} mightily. For 676to not print any shell prompt, which confuses @value{tramp} mightily. For
675reasons unknown, some Windows ports for @command{ssh} (maybe the 677reasons unknown, some Windows ports for @command{ssh} (maybe the
676Cygwin one) require the doubled @samp{-t} option. 678Cygwin one) require the doubled @samp{-t} option.
677 679
@@ -702,7 +704,7 @@ explicitely.
702CCC: Do we have to connect to the remote host once from the command 704CCC: Do we have to connect to the remote host once from the command
703line to accept the SSH key? Maybe this can be made automatic? 705line to accept the SSH key? Maybe this can be made automatic?
704 706
705CCC: Does @command{plink} support the @samp{-p} option? @tramp{} will 707CCC: Does @command{plink} support the @samp{-p} option? @value{tramp} will
706support that, anyway. 708support that, anyway.
707 709
708@end table 710@end table
@@ -723,8 +725,8 @@ transfers to an external transfer utility.
723This saves the overhead of encoding and decoding that multiplexing the 725This saves the overhead of encoding and decoding that multiplexing the
724transfer through the one connection has with the inline methods. 726transfer through the one connection has with the inline methods.
725 727
726If you want to use an external transfer method you @emph{must} be able 728If you want to use an external transfer method you should be able to
727to execute the transfer utility to copy files to and from the remote 729execute the transfer utility to copy files to and from the remote
728machine without any interaction. 730machine without any interaction.
729 731
730@cindex ssh-agent 732@cindex ssh-agent
@@ -735,9 +737,8 @@ This means that you will need to use @command{ssh-agent} if you use the
735If you use @command{rsync} via @command{ssh} then the same rule must 737If you use @command{rsync} via @command{ssh} then the same rule must
736apply to that connection. 738apply to that connection.
737 739
738If you cannot get @command{scp} to run without asking for a password but 740If you cannot get an external method to run without asking for a
739would still like to use @command{ssh} to secure your connection, have a 741password you should consider @ref{Password caching}.
740look at the @command{ssh} based inline methods.
741 742
742 743
743@table @asis 744@table @asis
@@ -785,7 +786,7 @@ know what these are, you do not need these options.
785 786
786All the @command{ssh} based methods support the kludgy @samp{-p} 787All the @command{ssh} based methods support the kludgy @samp{-p}
787feature where you can specify a port number to connect to in the host 788feature where you can specify a port number to connect to in the host
788name. For example, the host name @file{host#42} tells @tramp{} to 789name. For example, the host name @file{host#42} tells @value{tramp} to
789specify @samp{-p 42} in the argument list for @command{ssh}. 790specify @samp{-p 42} in the argument list for @command{ssh}.
790 791
791 792
@@ -823,13 +824,13 @@ the remote host, this option uses @samp{ssh -t -t @var{host} -l
823@var{user} /bin/sh} to open a connection. This is useful for users 824@var{user} /bin/sh} to open a connection. This is useful for users
824where the normal login shell is set up to ask them a number of 825where the normal login shell is set up to ask them a number of
825questions when logging in. This procedure avoids these questions, and 826questions when logging in. This procedure avoids these questions, and
826just gives @tramp{} a more-or-less `standard' login shell to work 827just gives @value{tramp} a more-or-less `standard' login shell to work
827with. 828with.
828 829
829This is also useful for Windows users where @command{ssh}, when 830This is also useful for Windows users where @command{ssh}, when
830invoked from an @value{emacs-name} buffer, tells them that it is not 831invoked from an @value{emacsname} buffer, tells them that it is not
831allocating a pseudo tty. When this happens, the login shell is wont 832allocating a pseudo tty. When this happens, the login shell is wont
832to not print any shell prompt, which confuses @tramp{} mightily. 833to not print any shell prompt, which confuses @value{tramp} mightily.
833Maybe this applies to the Cygwin port of SSH. 834Maybe this applies to the Cygwin port of SSH.
834 835
835This method supports the @samp{-p} hack. 836This method supports the @samp{-p} hack.
@@ -873,7 +874,7 @@ This method uses the command @samp{fsh @var{host} -l @var{user}
873@cindex fsh method 874@cindex fsh method
874 875
875There is no inline method using @command{fsh} as the multiplexing 876There is no inline method using @command{fsh} as the multiplexing
876provided by the program is not very useful in our context. @tramp{} 877provided by the program is not very useful in our context. @value{tramp}
877opens just one connection to the remote host and then keeps it open, 878opens just one connection to the remote host and then keeps it open,
878anyway. 879anyway.
879 880
@@ -882,8 +883,8 @@ anyway.
882@cindex method ftp 883@cindex method ftp
883@cindex ftp method 884@cindex ftp method
884 885
885This is not a native @tramp{} method. Instead of, it forwards all 886This is not a native @value{tramp} method. Instead of, it forwards all
886requests to @value{ftp-package-name}. 887requests to @value{ftppackagename}.
887@ifset xemacs 888@ifset xemacs
888This works only for unified filenames, see @ref{Issues}. 889This works only for unified filenames, see @ref{Issues}.
889@end ifset 890@end ifset
@@ -893,7 +894,7 @@ This works only for unified filenames, see @ref{Issues}.
893@cindex method smb 894@cindex method smb
894@cindex smb method 895@cindex smb method
895 896
896This is another not natural @tramp{} method. It uses the 897This is another not natural @value{tramp} method. It uses the
897@command{smbclient} command on different Unices in order to connect to 898@command{smbclient} command on different Unices in order to connect to
898an SMB server. An SMB server might be a Samba (or CIFS) server on 899an SMB server. An SMB server might be a Samba (or CIFS) server on
899another UNIX host or, more interesting, a host running MS Windows. So 900another UNIX host or, more interesting, a host running MS Windows. So
@@ -911,22 +912,22 @@ always for a password if you access another share on the same host.
911This can be suppressed by @ref{Password caching}. 912This can be suppressed by @ref{Password caching}.
912 913
913MS Windows uses for authorization both a user name and a domain name. 914MS Windows uses for authorization both a user name and a domain name.
914Because of this, the @tramp{} syntax has been extended: you can 915Because of this, the @value{tramp} syntax has been extended: you can
915specify a user name which looks like @code{user%domain} (the real user 916specify a user name which looks like @code{user%domain} (the real user
916name, then a percent sign, then the domain name). So, to connect to 917name, then a percent sign, then the domain name). So, to connect to
917the machine @code{melancholia} as user @code{daniel} of the domain 918the machine @code{melancholia} as user @code{daniel} of the domain
918@code{BIZARRE}, and edit @file{.emacs} in the home directory (share 919@code{BIZARRE}, and edit @file{.emacs} in the home directory (share
919@code{daniel$}) I would specify the filename 920@code{daniel$}) I would specify the filename
920@file{@value{tramp-prefix}smb@value{tramp-postfix-single-hop}daniel%BIZARRE@@melancholia@value{tramp-postfix}/daniel$$/.emacs}. 921@file{@value{prefix}smb@value{postfixsinglehop}daniel%BIZARRE@@melancholia@value{postfix}/daniel$$/.emacs}.
921 922
922The domain name as well as the user name are optional. If no user 923The domain name as well as the user name are optional. If no user
923name is specified at all, the anonymous user (without password 924name is specified at all, the anonymous user (without password
924prompting) is assumed. This is different from all other @tramp{} 925prompting) is assumed. This is different from all other @value{tramp}
925methods, where in such a case the local user name is taken. 926methods, where in such a case the local user name is taken.
926 927
927The @option{smb} method supports the @samp{-p} hack. 928The @option{smb} method supports the @samp{-p} hack.
928 929
929@strong{Please note:} If @value{emacs-name} runs locally under MS 930@strong{Please note:} If @value{emacsname} runs locally under MS
930Windows, this method isn't available. Instead of, you can use UNC 931Windows, this method isn't available. Instead of, you can use UNC
931file names like @file{//melancholia/daniel$$/.emacs}. The only 932file names like @file{//melancholia/daniel$$/.emacs}. The only
932disadvantage is that there's no possibility to specify another user 933disadvantage is that there's no possibility to specify another user
@@ -945,7 +946,7 @@ For example, if you are in a secured network, you might have to log in
945to a `bastion host' first before you can connect to the outside world. 946to a `bastion host' first before you can connect to the outside world.
946Of course, the target host may also require a bastion host. The format 947Of course, the target host may also require a bastion host. The format
947of multi-hop filenames is slightly different than the format of normal 948of multi-hop filenames is slightly different than the format of normal
948@tramp{} methods. 949@value{tramp} methods.
949 950
950@cindex method multi 951@cindex method multi
951@cindex multi method 952@cindex multi method
@@ -1014,7 +1015,7 @@ Some people might wish to use port forwarding with @command{ssh} or
1014maybe they have to use a nonstandard port. This can be accomplished 1015maybe they have to use a nonstandard port. This can be accomplished
1015by putting a stanza in @file{~/.ssh/config} for the account which 1016by putting a stanza in @file{~/.ssh/config} for the account which
1016specifies a different port number for a certain host name. But it can 1017specifies a different port number for a certain host name. But it can
1017also be accomplished within @tramp{}, by adding a multi-hop method. 1018also be accomplished within @value{tramp}, by adding a multi-hop method.
1018For example: 1019For example:
1019 1020
1020@lisp 1021@lisp
@@ -1035,7 +1036,7 @@ the standard port.
1035When you select an appropriate transfer method for your typical usage 1036When you select an appropriate transfer method for your typical usage
1036you should set the variable @code{tramp-default-method} to reflect that 1037you should set the variable @code{tramp-default-method} to reflect that
1037choice. This variable controls which method will be used when a method 1038choice. This variable controls which method will be used when a method
1038is not specified in the @tramp{} file name. For example: 1039is not specified in the @value{tramp} file name. For example:
1039 1040
1040@lisp 1041@lisp
1041(setq tramp-default-method "scp") 1042(setq tramp-default-method "scp")
@@ -1062,8 +1063,7 @@ See the documentation for the variable
1062@code{tramp-default-method-alist} for more details. 1063@code{tramp-default-method-alist} for more details.
1063 1064
1064External transfer methods are normally preferable to inline transfer 1065External transfer methods are normally preferable to inline transfer
1065methods, giving better performance. They may not be useful if you use 1066methods, giving better performance.
1066many remote machines where you cannot log in without a password.
1067 1067
1068@xref{Inline methods}. 1068@xref{Inline methods}.
1069@xref{External transfer methods}. 1069@xref{External transfer methods}.
@@ -1101,8 +1101,9 @@ to edit mostly small files.
1101 1101
1102I guess that these days, most people can access a remote machine by 1102I guess that these days, most people can access a remote machine by
1103using @code{ssh}. So I suggest that you use the @code{ssh} method. 1103using @code{ssh}. So I suggest that you use the @code{ssh} method.
1104So, type @kbd{C-x C-f /ssh:root@@otherhost:/etc/motd @key{RET}} to 1104So, type @kbd{C-x C-f
1105edit the @file{/etc/motd} file on the other host. 1105@value{prefix}ssh@value{postfixsinglehop}root@@otherhost@value{postfix}/etc/motd
1106@key{RET}} to edit the @file{/etc/motd} file on the other host.
1106 1107
1107If you can't use @code{ssh} to log in to the remote host, then select a 1108If you can't use @code{ssh} to log in to the remote host, then select a
1108method that uses a program that works. For instance, Windows users 1109method that uses a program that works. For instance, Windows users
@@ -1120,11 +1121,6 @@ first whether you really get a noticeable speed advantage from using an
1120out-of-band method! Maybe even for large files, inline methods are 1121out-of-band method! Maybe even for large files, inline methods are
1121fast enough. 1122fast enough.
1122 1123
1123The reason why I'm suggesting to use inline methods is that they work
1124even if the remote end is asking you for a password. Out-of-band
1125methods don't work in this situation. Also, multi-hop methods are
1126inherently inline.
1127
1128 1124
1129@node Customizing Methods 1125@node Customizing Methods
1130@section Using Non-Standard Methods 1126@section Using Non-Standard Methods
@@ -1267,13 +1263,13 @@ times. Reentering passwords again and again would be annoying, when
1267the choosen method does not support access without password prompt 1263the choosen method does not support access without password prompt
1268throught own configuration. 1264throught own configuration.
1269 1265
1270By default, @tramp{} caches the passwords entered by you. They will 1266By default, @value{tramp} caches the passwords entered by you. They will
1271be reused next time if a connection needs them for the same user name 1267be reused next time if a connection needs them for the same user name
1272and host name, independant of the connection method. 1268and host name, independant of the connection method.
1273 1269
1274@vindex password-cache-expiry 1270@vindex password-cache-expiry
1275Passwords are not saved permanently, that means the password caching 1271Passwords are not saved permanently, that means the password caching
1276is limited to the lifetime of your @value{emacs-name} session. You 1272is limited to the lifetime of your @value{emacsname} session. You
1277can influence the lifetime of password caching by customizing the 1273can influence the lifetime of password caching by customizing the
1278variable @code{password-cache-expiry}. The value is the number of 1274variable @code{password-cache-expiry}. The value is the number of
1279seconds how long passwords are cached. Setting it to @code{nil} 1275seconds how long passwords are cached. Setting it to @code{nil}
@@ -1292,19 +1288,19 @@ can be disabled totally by customizing the variable
1292 1288
1293Implementation Note: password caching is based on the package 1289Implementation Note: password caching is based on the package
1294password.el in No Gnus. For the time being, it is activated only when 1290password.el in No Gnus. For the time being, it is activated only when
1295this package is seen in the @code{load-path} while loading @tramp{}. 1291this package is seen in the @code{load-path} while loading @value{tramp}.
1296@ifset tramp-inst 1292@ifset installchapter
1297If you don't use No Gnus, you can take password.el from the @tramp{} 1293If you don't use No Gnus, you can take password.el from the @value{tramp}
1298@file{contrib} directory, see @ref{Installation parameters}. 1294@file{contrib} directory, see @ref{Installation parameters}.
1299@end ifset 1295@end ifset
1300It will be activated mandatory once No Gnus has found its way into 1296It will be activated mandatory once No Gnus has found its way into
1301@value{emacs-name}. 1297@value{emacsname}.
1302 1298
1303 1299
1304@node Remote Programs 1300@node Remote Programs
1305@section How @tramp{} finds and uses programs on the remote machine. 1301@section How @value{tramp} finds and uses programs on the remote machine.
1306 1302
1307@tramp{} depends on a number of programs on the remote host in order to 1303@value{tramp} depends on a number of programs on the remote host in order to
1308function, including @command{ls}, @command{test}, @command{find} and 1304function, including @command{ls}, @command{test}, @command{find} and
1309@command{cat}. 1305@command{cat}.
1310 1306
@@ -1318,7 +1314,7 @@ available, they are used to improve the performance and accuracy of
1318remote file access. 1314remote file access.
1319 1315
1320@vindex tramp-remote-path 1316@vindex tramp-remote-path
1321When @tramp{} connects to the remote machine, it searches for the 1317When @value{tramp} connects to the remote machine, it searches for the
1322programs that it can use. The variable @var{tramp-remote-path} controls 1318programs that it can use. The variable @var{tramp-remote-path} controls
1323the directories searched on the remote machine. 1319the directories searched on the remote machine.
1324 1320
@@ -1327,16 +1323,16 @@ machines. It is possible, however, that your local (or remote ;) system
1327administrator has put the tools you want in some obscure local 1323administrator has put the tools you want in some obscure local
1328directory. 1324directory.
1329 1325
1330In this case, you can still use them with @tramp{}. You simply need to 1326In this case, you can still use them with @value{tramp}. You simply need to
1331add code to your @file{.emacs} to add the directory to the remote path. 1327add code to your @file{.emacs} to add the directory to the remote path.
1332This will then be searched by @tramp{} when you connect and the software 1328This will then be searched by @value{tramp} when you connect and the software
1333found. 1329found.
1334 1330
1335To add a directory to the remote search path, you could use code such 1331To add a directory to the remote search path, you could use code such
1336as: 1332as:
1337 1333
1338@lisp 1334@lisp
1339@i{;; We load @tramp{} to define the variable.} 1335@i{;; We load @value{tramp} to define the variable.}
1340(require 'tramp) 1336(require 'tramp)
1341@i{;; We have @command{perl} in "/usr/local/perl/bin"} 1337@i{;; We have @command{perl} in "/usr/local/perl/bin"}
1342(add-to-list 'tramp-remote-path "/usr/local/perl/bin") 1338(add-to-list 'tramp-remote-path "/usr/local/perl/bin")
@@ -1351,19 +1347,19 @@ as:
1351@cindex @file{.login} file 1347@cindex @file{.login} file
1352@cindex shell init files 1348@cindex shell init files
1353 1349
1354As explained in the @ref{Overview} section, @tramp{} connects to the 1350As explained in the @ref{Overview} section, @value{tramp} connects to the
1355remote host and talks to the shell it finds there. Of course, when you 1351remote host and talks to the shell it finds there. Of course, when you
1356log in, the shell executes its init files. Suppose your init file 1352log in, the shell executes its init files. Suppose your init file
1357requires you to enter the birth date of your mother; clearly @tramp{} 1353requires you to enter the birth date of your mother; clearly @value{tramp}
1358does not know this and hence fails to log you in to that host. 1354does not know this and hence fails to log you in to that host.
1359 1355
1360There are different possible strategies for pursuing this problem. One 1356There are different possible strategies for pursuing this problem. One
1361strategy is to enable @tramp{} to deal with all possible situations. 1357strategy is to enable @value{tramp} to deal with all possible situations.
1362This is a losing battle, since it is not possible to deal with 1358This is a losing battle, since it is not possible to deal with
1363@emph{all} situations. The other strategy is to require you to set up 1359@emph{all} situations. The other strategy is to require you to set up
1364the remote host such that it behaves like @tramp{} expects. This might 1360the remote host such that it behaves like @value{tramp} expects. This might
1365be inconvenient because you have to invest a lot of effort into shell 1361be inconvenient because you have to invest a lot of effort into shell
1366setup before you can begin to use @tramp{}. 1362setup before you can begin to use @value{tramp}.
1367 1363
1368The package, therefore, pursues a combined approach. It tries to figure 1364The package, therefore, pursues a combined approach. It tries to figure
1369out some of the more common setups, and only requires you to avoid 1365out some of the more common setups, and only requires you to avoid
@@ -1376,34 +1372,34 @@ builtin doesn't work but the program @code{/usr/bin/test -e} or
1376@code{/bin/test -e} works. And on still other hosts, @code{ls -d} is 1372@code{/bin/test -e} works. And on still other hosts, @code{ls -d} is
1377the right way to do this.) 1373the right way to do this.)
1378 1374
1379Below you find a discussion of a few things that @tramp{} does not deal 1375Below you find a discussion of a few things that @value{tramp} does not deal
1380with, and that you therefore have to set up correctly. 1376with, and that you therefore have to set up correctly.
1381 1377
1382@table @asis 1378@table @asis
1383@item @var{shell-prompt-pattern} 1379@item @var{shell-prompt-pattern}
1384@vindex shell-prompt-pattern 1380@vindex shell-prompt-pattern
1385 1381
1386After logging in to the remote host, @tramp{} has to wait for the remote 1382After logging in to the remote host, @value{tramp} has to wait for the remote
1387shell startup to finish before it can send commands to the remote 1383shell startup to finish before it can send commands to the remote
1388shell. The strategy here is to wait for the shell prompt. In order to 1384shell. The strategy here is to wait for the shell prompt. In order to
1389recognize the shell prompt, the variable @code{shell-prompt-pattern} has 1385recognize the shell prompt, the variable @code{shell-prompt-pattern} has
1390to be set correctly to recognize the shell prompt on the remote host. 1386to be set correctly to recognize the shell prompt on the remote host.
1391 1387
1392Note that @tramp{} requires the match for @code{shell-prompt-pattern} 1388Note that @value{tramp} requires the match for @code{shell-prompt-pattern}
1393to be at the end of the buffer. Many people have something like the 1389to be at the end of the buffer. Many people have something like the
1394following as the value for the variable: @code{"^[^>$][>$] *"}. Now 1390following as the value for the variable: @code{"^[^>$][>$] *"}. Now
1395suppose your shell prompt is @code{a <b> c $ }. In this case, 1391suppose your shell prompt is @code{a <b> c $ }. In this case,
1396@tramp{} recognizes the @code{>} character as the end of the prompt, 1392@value{tramp} recognizes the @code{>} character as the end of the prompt,
1397but it is not at the end of the buffer. 1393but it is not at the end of the buffer.
1398 1394
1399@item @var{tramp-shell-prompt-pattern} 1395@item @var{tramp-shell-prompt-pattern}
1400@vindex tramp-shell-prompt-pattern 1396@vindex tramp-shell-prompt-pattern
1401 1397
1402This regular expression is used by @tramp{} in the same way as 1398This regular expression is used by @value{tramp} in the same way as
1403@code{shell-prompt-pattern}, to match prompts from the remote shell. 1399@code{shell-prompt-pattern}, to match prompts from the remote shell.
1404This second variable exists because the prompt from the remote shell 1400This second variable exists because the prompt from the remote shell
1405might be different from the prompt from a local shell --- after all, 1401might be different from the prompt from a local shell --- after all,
1406the whole point of @tramp{} is to log in to remote hosts as a 1402the whole point of @value{tramp} is to log in to remote hosts as a
1407different user. The default value of 1403different user. The default value of
1408@code{tramp-shell-prompt-pattern} is the same as the default value of 1404@code{tramp-shell-prompt-pattern} is the same as the default value of
1409@code{shell-prompt-pattern}, which is reported to work well in many 1405@code{shell-prompt-pattern}, which is reported to work well in many
@@ -1415,10 +1411,10 @@ circumstances.
1415 1411
1416Some people invoke the @code{tset} program from their shell startup 1412Some people invoke the @code{tset} program from their shell startup
1417scripts which asks the user about the terminal type of the shell. 1413scripts which asks the user about the terminal type of the shell.
1418Maybe some shells ask other questions when they are started. @tramp{} 1414Maybe some shells ask other questions when they are started. @value{tramp}
1419does not know how to answer these questions. There are two approaches 1415does not know how to answer these questions. There are two approaches
1420for dealing with this problem. One approach is to take care that the 1416for dealing with this problem. One approach is to take care that the
1421shell does not ask any questions when invoked from @tramp{}. You can 1417shell does not ask any questions when invoked from @value{tramp}. You can
1422do this by checking the @code{TERM} environment variable, it will be 1418do this by checking the @code{TERM} environment variable, it will be
1423set to @code{dumb} when connecting. 1419set to @code{dumb} when connecting.
1424 1420
@@ -1426,7 +1422,7 @@ set to @code{dumb} when connecting.
1426The variable @code{tramp-terminal-type} can be used to change this value 1422The variable @code{tramp-terminal-type} can be used to change this value
1427to @code{dumb}. 1423to @code{dumb}.
1428 1424
1429The other approach is to teach @tramp{} about these questions. See 1425The other approach is to teach @value{tramp} about these questions. See
1430the variables @code{tramp-actions-before-shell} and 1426the variables @code{tramp-actions-before-shell} and
1431@code{tramp-multi-actions} (for multi-hop connections). 1427@code{tramp-multi-actions} (for multi-hop connections).
1432 1428
@@ -1437,12 +1433,12 @@ If you have a user named frumple and set the variable @code{FRUMPLE} in
1437your shell environment, then this might cause trouble. Maybe rename 1433your shell environment, then this might cause trouble. Maybe rename
1438the variable to @code{FRUMPLE_DIR} or the like. 1434the variable to @code{FRUMPLE_DIR} or the like.
1439 1435
1440This weird effect was actually reported by a @tramp{} user! 1436This weird effect was actually reported by a @value{tramp} user!
1441 1437
1442 1438
1443@item Non-Bourne commands in @file{.profile} 1439@item Non-Bourne commands in @file{.profile}
1444 1440
1445After logging in to the remote host, @tramp{} issues the command 1441After logging in to the remote host, @value{tramp} issues the command
1446@code{exec /bin/sh}. (Actually, the command is slightly different.) 1442@code{exec /bin/sh}. (Actually, the command is slightly different.)
1447When @code{/bin/sh} is executed, it reads some init files, such as 1443When @code{/bin/sh} is executed, it reads some init files, such as
1448@file{~/.shrc} or @file{~/.profile}. 1444@file{~/.shrc} or @file{~/.profile}.
@@ -1476,9 +1472,9 @@ instead of @file{~/.profile}, if the former exists. So bash
1476aficionados just rename their @file{~/.profile} to 1472aficionados just rename their @file{~/.profile} to
1477@file{~/.bash_profile} on all remote hosts, and Bob's your uncle. 1473@file{~/.bash_profile} on all remote hosts, and Bob's your uncle.
1478 1474
1479The @tramp{} developers would like to circumvent this problem, so if you 1475The @value{tramp} developers would like to circumvent this problem, so if you
1480have an idea about it, please tell us. However, we are afraid it is not 1476have an idea about it, please tell us. However, we are afraid it is not
1481that simple: before saying @code{exec /bin/sh}, @tramp{} does not know 1477that simple: before saying @code{exec /bin/sh}, @value{tramp} does not know
1482which kind of shell it might be talking to. It could be a Bourne-ish 1478which kind of shell it might be talking to. It could be a Bourne-ish
1483shell like ksh or bash, or it could be a csh derivative like tcsh, or 1479shell like ksh or bash, or it could be a csh derivative like tcsh, or
1484it could be zsh, or even rc. If the shell is Bourne-ish already, then 1480it could be zsh, or even rc. If the shell is Bourne-ish already, then
@@ -1492,42 +1488,122 @@ find out if the shell is Bourne-ish?
1492@section Auto-save and Backup configuration 1488@section Auto-save and Backup configuration
1493@cindex auto-save 1489@cindex auto-save
1494@cindex backup 1490@cindex backup
1491@ifset emacs
1495@vindex backup-directory-alist 1492@vindex backup-directory-alist
1493@end ifset
1494@ifset xemacs
1495@vindex bkup-backup-directory-info
1496@end ifset
1496 1497
1497Normally, @value{emacs-name} writes backup files to the same directory 1498Normally, @value{emacsname} writes backup files to the same directory
1498as the original files, but this behavior can be changed via the 1499as the original files, but this behavior can be changed via the
1499variable @code{backup-directory-alist}. In connection with @tramp{}, 1500variable
1500this can have unexpected side effects. Suppose that you specify that 1501@ifset emacs
1501all backups should go to the directory @file{~/.emacs.d/backups/}, and 1502@code{backup-directory-alist}.
1502then you edit the file @file{/su:root@@localhost:/etc/secretfile}. 1503@end ifset
1504@ifset xemacs
1505@code{bkup-backup-directory-info}.
1506@end ifset
1507In connection with @value{tramp}, this can have unexpected side effects.
1508Suppose that you specify that all backups should go to the directory
1509@file{~/.emacs.d/backups/}, and then you edit the file
1510@file{@value{prefix}su@value{postfixsinglehop}root@@localhost@value{postfix}/etc/secretfile}.
1503The effect is that the backup file will be owned by you and not by 1511The effect is that the backup file will be owned by you and not by
1504root, thus possibly enabling others to see it even if they were not 1512root, thus possibly enabling others to see it even if they were not
1505intended to see it. 1513intended to see it.
1506 1514
1507When @code{backup-directory-alist} is nil (the default), such problems 1515When
1508do not occur. 1516@ifset emacs
1517@code{backup-directory-alist}
1518@end ifset
1519@ifset xemacs
1520@code{bkup-backup-directory-info}
1521@end ifset
1522is nil (the default), such problems do not occur.
1509 1523
1510If you wish to customize the variable, the workaround is to include 1524Therefore, it is usefull to set special values for @value{tramp}
1511special settings for @tramp{} files. For example, the following statement 1525files. For example, the following statement effectively `turns off'
1512effectively `turns off' the effect of @code{backup-directory-alist} for 1526the effect of
1513@tramp{} files: 1527@ifset emacs
1528@code{backup-directory-alist}
1529@end ifset
1530@ifset xemacs
1531@code{bkup-backup-directory-info}
1532@end ifset
1533for @value{tramp} files:
1514 1534
1535@ifset emacs
1515@lisp 1536@lisp
1516(require 'tramp)
1517(add-to-list 'backup-directory-alist 1537(add-to-list 'backup-directory-alist
1518 (cons tramp-file-name-regexp nil)) 1538 (cons tramp-file-name-regexp nil))
1519@end lisp 1539@end lisp
1540@end ifset
1541@ifset xemacs
1542@lisp
1543(require 'backup-dir)
1544(add-to-list 'bkup-backup-directory-info
1545 (list tramp-file-name-regexp ""))
1546@end lisp
1547@end ifset
1548
1549Another possibility is to use the @value{tramp} variable
1550@ifset emacs
1551@code{tramp-backup-directory-alist}.
1552@end ifset
1553@ifset xemacs
1554@code{tramp-bkup-backup-directory-info}.
1555@end ifset
1556This variable has the same meaning like
1557@ifset emacs
1558@code{backup-directory-alist}.
1559@end ifset
1560@ifset xemacs
1561@code{bkup-backup-directory-info}.
1562@end ifset
1563If a @value{tramp} file is backed up, and DIRECTORY is an absolute
1564local file name, DIRECTORY is prepended with the @value{tramp} file
1565name prefix of the file to be backed up.
1566
1567@noindent
1568Example:
1569
1570@ifset emacs
1571@lisp
1572(add-to-list 'backup-directory-alist
1573 (cons "." "~/.emacs.d/backups/"))
1574(setq tramp-backup-directory-alist backup-directory-alist)
1575@end lisp
1576@end ifset
1577@ifset xemacs
1578@lisp
1579(require 'backup-dir)
1580(add-to-list 'bkup-backup-directory-info
1581 (list "." "~/.emacs.d/backups/" 'full-path))
1582(setq tramp-bkup-backup-directory-info bkup-backup-directory-info)
1583@end lisp
1584@end ifset
1585
1586@noindent
1587The backup file name of
1588@file{@value{prefix}su@value{postfixsinglehop}root@@localhost@value{postfix}/etc/secretfile}
1589would be
1590@ifset emacs
1591@file{@value{prefix}su@value{postfixsinglehop}root@@localhost@value{postfix}~/.emacs.d/backups/!su:root@@localhost:!etc!secretfile~}
1592@end ifset
1593@ifset xemacs
1594@file{@value{prefix}su@value{postfixsinglehop}root@@localhost@value{postfix}~/.emacs.d/backups/![su!root@@localhost]!etc!secretfile~}
1595@end ifset
1520 1596
1521The same problem can happen with auto-saving files. 1597The same problem can happen with auto-saving files.
1522@ifset emacs 1598@ifset emacs
1523Since @value{emacs-name} 21, the variable 1599Since @value{emacsname} 21, the variable
1524@code{auto-save-file-name-transforms} keeps information, on which 1600@code{auto-save-file-name-transforms} keeps information, on which
1525directory an auto-saved file should go. By default, it is initialized 1601directory an auto-saved file should go. By default, it is initialized
1526for @tramp{} files to the local temporary directory. 1602for @value{tramp} files to the local temporary directory.
1527 1603
1528On some versions of @value{emacs-name}, namely the version built for 1604On some versions of @value{emacsname}, namely the version built for
1529Debian Linux, the variable @code{auto-save-file-name-transforms} 1605Debian Linux, the variable @code{auto-save-file-name-transforms}
1530contains the directory where @value{emacs-name} was built. A 1606contains the directory where @value{emacsname} was built. A
1531workaround is to manually set the variable to a sane value. 1607workaround is to manually set the variable to a sane value.
1532 1608
1533If auto-saved files should go into the same directory as the original 1609If auto-saved files should go into the same directory as the original
@@ -1537,8 +1613,8 @@ Another possibility is to set the variable
1537@code{tramp-auto-save-directory} to a proper value. 1613@code{tramp-auto-save-directory} to a proper value.
1538@end ifset 1614@end ifset
1539@ifset xemacs 1615@ifset xemacs
1540For this purpose you can set the variable 1616For this purpose you can set the variable @code{auto-save-directory}
1541@code{tramp-auto-save-directory} to a proper value. 1617to a proper value.
1542@end ifset 1618@end ifset
1543 1619
1544 1620
@@ -1558,7 +1634,7 @@ setting up Cygwin in their FAQ at @uref{http://cygwin.com/faq/}.
1558@cindex method scpx with Cygwin 1634@cindex method scpx with Cygwin
1559@cindex scpx method with Cygwin 1635@cindex scpx method with Cygwin
1560If you wish to use the @code{scpx} connection method, then you might 1636If you wish to use the @code{scpx} connection method, then you might
1561have the problem that @value{emacs-name} calls @code{scp} with a 1637have the problem that @value{emacsname} calls @code{scp} with a
1562Windows filename such as @code{c:/foo}. The Cygwin version of 1638Windows filename such as @code{c:/foo}. The Cygwin version of
1563@code{scp} does not know about Windows filenames and interprets this 1639@code{scp} does not know about Windows filenames and interprets this
1564as a remote filename on the host @code{c}. 1640as a remote filename on the host @code{c}.
@@ -1566,21 +1642,19 @@ as a remote filename on the host @code{c}.
1566One possible workaround is to write a wrapper script for @code{scp} 1642One possible workaround is to write a wrapper script for @code{scp}
1567which converts the Windows filename to a Cygwinized filename. 1643which converts the Windows filename to a Cygwinized filename.
1568 1644
1569I guess that another workaround is to run @value{emacs-name} under 1645I guess that another workaround is to run @value{emacsname} under
1570Cygwin, or to run a Cygwinized @value{emacs-name}. 1646Cygwin, or to run a Cygwinized @value{emacsname}.
1571 1647
1572@cindex Cygwin and ssh-agent 1648@cindex Cygwin and ssh-agent
1573@cindex SSH_AUTH_SOCK and @value{emacs-name} on Windows 1649@cindex SSH_AUTH_SOCK and @value{emacsname} on Windows
1574If you want to use either @code{ssh} based method on Windows, then you 1650If you want to use either @code{ssh} based method on Windows, then you
1575might encounter problems with @code{ssh-agent}. Using this program, 1651might encounter problems with @code{ssh-agent}. Using this program,
1576you can avoid typing the pass-phrase every time you log in (and the 1652you can avoid typing the pass-phrase every time you log in. However,
1577@code{scpx} method more or less requires you to use @code{ssh-agent} 1653if you start @value{emacsname} from a desktop shortcut, then the
1578because it does not allow you to type a password or pass-phrase). 1654environment variable @code{SSH_AUTH_SOCK} is not set and so
1579However, if you start @value{emacs-name} from a desktop shortcut, then 1655@value{emacsname} and thus @value{tramp} and thus @code{ssh} and
1580the environment variable @code{SSH_AUTH_SOCK} is not set and so 1656@code{scp} started from @value{tramp} cannot communicate with
1581@value{emacs-name} and thus @tramp{} and thus @code{ssh} and 1657@code{ssh-agent}. It works better to start @value{emacsname} from
1582@code{scp} started from @tramp{} cannot communicate with
1583@code{ssh-agent}. It works better to start @value{emacs-name} from
1584the shell. 1658the shell.
1585 1659
1586If anyone knows how to start @code{ssh-agent} under Windows in such a 1660If anyone knows how to start @code{ssh-agent} under Windows in such a
@@ -1589,30 +1663,30 @@ know anything at all about Windows@dots{}
1589 1663
1590 1664
1591@node Usage 1665@node Usage
1592@chapter Using @tramp{} 1666@chapter Using @value{tramp}
1593@cindex using @tramp{} 1667@cindex using @value{tramp}
1594 1668
1595Once you have installed @tramp{} it will operate fairly transparently. You 1669Once you have installed @value{tramp} it will operate fairly transparently. You
1596will be able to access files on any remote machine that you can log in 1670will be able to access files on any remote machine that you can log in
1597to as though they were local. 1671to as though they were local.
1598 1672
1599Files are specified to @tramp{} using a formalized syntax specifying the 1673Files are specified to @value{tramp} using a formalized syntax specifying the
1600details of the system to connect to. This is similar to the syntax used 1674details of the system to connect to. This is similar to the syntax used
1601by the @value{ftp-package-name} package. 1675by the @value{ftppackagename} package.
1602 1676
1603@cindex type-ahead 1677@cindex type-ahead
1604Something that might happen which surprises you is that 1678Something that might happen which surprises you is that
1605@value{emacs-name} remembers all your keystrokes, so if you see a 1679@value{emacsname} remembers all your keystrokes, so if you see a
1606password prompt from @value{emacs-name}, say, and hit @kbd{@key{RET}} 1680password prompt from @value{emacsname}, say, and hit @kbd{@key{RET}}
1607twice instead of once, then the second keystroke will be processed by 1681twice instead of once, then the second keystroke will be processed by
1608@value{emacs-name} after @tramp{} has done its thing. Why, this 1682@value{emacsname} after @value{tramp} has done its thing. Why, this
1609type-ahead is normal behavior, you say. Right you are, but be aware 1683type-ahead is normal behavior, you say. Right you are, but be aware
1610that opening a remote file might take quite a while, maybe half a 1684that opening a remote file might take quite a while, maybe half a
1611minute when a connection needs to be opened. Maybe after half a 1685minute when a connection needs to be opened. Maybe after half a
1612minute you have already forgotten that you hit that key! 1686minute you have already forgotten that you hit that key!
1613 1687
1614@menu 1688@menu
1615* Filename Syntax:: @tramp{} filename conventions. 1689* Filename Syntax:: @value{tramp} filename conventions.
1616* Multi-hop filename syntax:: Multi-hop filename conventions. 1690* Multi-hop filename syntax:: Multi-hop filename conventions.
1617* Filename completion:: Filename completion. 1691* Filename completion:: Filename completion.
1618* Dired:: Dired. 1692* Dired:: Dired.
@@ -1620,66 +1694,66 @@ minute you have already forgotten that you hit that key!
1620 1694
1621 1695
1622@node Filename Syntax 1696@node Filename Syntax
1623@section @tramp{} filename conventions 1697@section @value{tramp} filename conventions
1624@cindex filename syntax 1698@cindex filename syntax
1625@cindex filename examples 1699@cindex filename examples
1626 1700
1627To access the file @var{localname} on the remote machine @var{machine} you 1701To access the file @var{localname} on the remote machine @var{machine} you
1628would specify the filename 1702would specify the filename
1629@file{@value{tramp-prefix}@var{machine}@value{tramp-postfix}@var{localname}}. 1703@file{@value{prefix}@var{machine}@value{postfix}@var{localname}}.
1630This will connect to @var{machine} and transfer the file using the 1704This will connect to @var{machine} and transfer the file using the
1631default method. @xref{Default Method}. 1705default method. @xref{Default Method}.
1632 1706
1633Some examples of @tramp{} filenames are shown below. 1707Some examples of @value{tramp} filenames are shown below.
1634 1708
1635@table @file 1709@table @file
1636@item @value{tramp-prefix}melancholia@value{tramp-postfix}.emacs 1710@item @value{prefix}melancholia@value{postfix}.emacs
1637Edit the file @file{.emacs} in your home directory on the machine 1711Edit the file @file{.emacs} in your home directory on the machine
1638@code{melancholia}. 1712@code{melancholia}.
1639 1713
1640@item @value{tramp-prefix}melancholia.danann.net@value{tramp-postfix}.emacs 1714@item @value{prefix}melancholia.danann.net@value{postfix}.emacs
1641This edits the same file, using the fully qualified domain name of 1715This edits the same file, using the fully qualified domain name of
1642the machine. 1716the machine.
1643 1717
1644@item @value{tramp-prefix}melancholia@value{tramp-postfix}~/.emacs 1718@item @value{prefix}melancholia@value{postfix}~/.emacs
1645This also edits the same file --- the @file{~} is expanded to your 1719This also edits the same file --- the @file{~} is expanded to your
1646home directory on the remote machine, just like it is locally. 1720home directory on the remote machine, just like it is locally.
1647 1721
1648@item @value{tramp-prefix}melancholia@value{tramp-postfix}~daniel/.emacs 1722@item @value{prefix}melancholia@value{postfix}~daniel/.emacs
1649This edits the file @file{.emacs} in the home directory of the user 1723This edits the file @file{.emacs} in the home directory of the user
1650@code{daniel} on the machine @code{melancholia}. The @file{~<user>} 1724@code{daniel} on the machine @code{melancholia}. The @file{~<user>}
1651construct is expanded to the home directory of that user on the remote 1725construct is expanded to the home directory of that user on the remote
1652machine. 1726machine.
1653 1727
1654@item @value{tramp-prefix}melancholia@value{tramp-postfix}/etc/squid.conf 1728@item @value{prefix}melancholia@value{postfix}/etc/squid.conf
1655This edits the file @file{/etc/squid.conf} on the machine 1729This edits the file @file{/etc/squid.conf} on the machine
1656@code{melancholia}. 1730@code{melancholia}.
1657 1731
1658@end table 1732@end table
1659 1733
1660Unless you specify a different name to use, @tramp{} will use the 1734Unless you specify a different name to use, @value{tramp} will use the
1661current local user name as the remote user name to log in with. If you 1735current local user name as the remote user name to log in with. If you
1662need to log in as a different user, you can specify the user name as 1736need to log in as a different user, you can specify the user name as
1663part of the filename. 1737part of the filename.
1664 1738
1665To log in to the remote machine as a specific user, you use the syntax 1739To log in to the remote machine as a specific user, you use the syntax
1666@file{@value{tramp-prefix}@var{user}@@@var{machine}@value{tramp-postfix}/@var{path/to.file}}. 1740@file{@value{prefix}@var{user}@@@var{machine}@value{postfix}/@var{path/to.file}}.
1667That means that connecting to @code{melancholia} as @code{daniel} and 1741That means that connecting to @code{melancholia} as @code{daniel} and
1668editing @file{.emacs} in your home directory you would specify 1742editing @file{.emacs} in your home directory you would specify
1669@file{@value{tramp-prefix}daniel@@melancholia@value{tramp-postfix}.emacs}. 1743@file{@value{prefix}daniel@@melancholia@value{postfix}.emacs}.
1670 1744
1671It is also possible to specify other file transfer methods 1745It is also possible to specify other file transfer methods
1672(@pxref{Default Method}) as part of the filename. 1746(@pxref{Default Method}) as part of the filename.
1673@ifset emacs 1747@ifset emacs
1674This is done by putting the method before the user and host name, as 1748This is done by putting the method before the user and host name, as
1675in 1749in
1676@file{@value{tramp-prefix}@var{method}@value{tramp-postfix-single-hop}} 1750@file{@value{prefix}@var{method}@value{postfixsinglehop}}
1677(Note the trailing colon). 1751(Note the trailing colon).
1678@end ifset 1752@end ifset
1679@ifset xemacs 1753@ifset xemacs
1680This is done by replacing the initial 1754This is done by replacing the initial
1681@file{@value{tramp-prefix}} with 1755@file{@value{prefix}} with
1682@file{@value{tramp-prefix}<method>@value{tramp-postfix-single-hop}}. 1756@file{@value{prefix}<method>@value{postfixsinglehop}}.
1683(Note the trailing slash!). 1757(Note the trailing slash!).
1684@end ifset 1758@end ifset
1685The user, machine and file specification remain the same. 1759The user, machine and file specification remain the same.
@@ -1687,7 +1761,7 @@ The user, machine and file specification remain the same.
1687So, to connect to the machine @code{melancholia} as @code{daniel}, 1761So, to connect to the machine @code{melancholia} as @code{daniel},
1688using the @option{ssh} method to transfer files, and edit @file{.emacs} 1762using the @option{ssh} method to transfer files, and edit @file{.emacs}
1689in my home directory I would specify the filename 1763in my home directory I would specify the filename
1690@file{@value{tramp-prefix}ssh@value{tramp-postfix-single-hop}daniel@@melancholia@value{tramp-postfix}.emacs}. 1764@file{@value{prefix}ssh@value{postfixsinglehop}daniel@@melancholia@value{postfix}.emacs}.
1691 1765
1692 1766
1693@node Multi-hop filename syntax 1767@node Multi-hop filename syntax
@@ -1696,11 +1770,11 @@ in my home directory I would specify the filename
1696@cindex multi-hop filename syntax 1770@cindex multi-hop filename syntax
1697 1771
1698The syntax of multi-hop file names is necessarily slightly different 1772The syntax of multi-hop file names is necessarily slightly different
1699than the syntax of other @tramp{} file names. Here's an example 1773than the syntax of other @value{tramp} file names. Here's an example
1700multi-hop file name: 1774multi-hop file name:
1701 1775
1702@example 1776@example
1703@value{tramp-prefix}multi@value{tramp-postfix-single-hop}rsh@value{tramp-postfix-multi-hop}out@@gate@value{tramp-postfix-single-hop}telnet@value{tramp-postfix-multi-hop}kai@@real.host@value{tramp-postfix}/path/to.file 1777@value{prefix}multi@value{postfixsinglehop}rsh@value{postfixmultihop}out@@gate@value{postfixsinglehop}telnet@value{postfixmultihop}kai@@real.host@value{postfix}/path/to.file
1704@end example 1778@end example
1705 1779
1706This is quite a mouthful. So let's go through it step by step. The 1780This is quite a mouthful. So let's go through it step by step. The
@@ -1711,9 +1785,9 @@ The parts are separated by colons
1711@ifset xemacs 1785@ifset xemacs
1712The parts are separated by slashes and square brackets. 1786The parts are separated by slashes and square brackets.
1713@end ifset 1787@end ifset
1714The first part is @file{@value{tramp-prefix}multi}, the method 1788The first part is @file{@value{prefix}multi}, the method
1715specification. The second part is 1789specification. The second part is
1716@file{rsh@value{tramp-postfix-multi-hop}out@@gate@value{tramp-postfix-single-hop}telnet@value{tramp-postfix-multi-hop}kai@@real.host} 1790@file{rsh@value{postfixmultihop}out@@gate@value{postfixsinglehop}telnet@value{postfixmultihop}kai@@real.host}
1717and specifies the hops. The final part is @file{/path/to.file} and 1791and specifies the hops. The final part is @file{/path/to.file} and
1718specifies the file name on the remote host. 1792specifies the file name on the remote host.
1719 1793
@@ -1722,18 +1796,18 @@ Methods}, for a list of alternatives for the method specification.
1722 1796
1723The second part can be subdivided again into components, so-called 1797The second part can be subdivided again into components, so-called
1724hops. In the above file name, there are two hops, 1798hops. In the above file name, there are two hops,
1725@file{rsh@value{tramp-postfix-multi-hop}out@@gate} and 1799@file{rsh@value{postfixmultihop}out@@gate} and
1726@file{telnet@value{tramp-postfix-multi-hop}kai@@real.host}. 1800@file{telnet@value{postfixmultihop}kai@@real.host}.
1727 1801
1728Each hop can @emph{again} be subdivided into (three) components, the 1802Each hop can @emph{again} be subdivided into (three) components, the
1729@dfn{hop method}, the @dfn{user name} and the @dfn{host name}. The 1803@dfn{hop method}, the @dfn{user name} and the @dfn{host name}. The
1730meaning of the second and third component should be clear, and the hop 1804meaning of the second and third component should be clear, and the hop
1731method says what program to use to perform that hop. 1805method says what program to use to perform that hop.
1732 1806
1733The first hop, @file{rsh@value{tramp-postfix-multi-hop}out@@gate}, 1807The first hop, @file{rsh@value{postfixmultihop}out@@gate},
1734says to use @command{rsh} to log in as user @code{out} to the host 1808says to use @command{rsh} to log in as user @code{out} to the host
1735@code{gate}. Starting at that host, the second hop, 1809@code{gate}. Starting at that host, the second hop,
1736@file{telnet@value{tramp-postfix-multi-hop}kai@@real.host}, says to 1810@file{telnet@value{postfixmultihop}kai@@real.host}, says to
1737use @command{telnet} to log in as user @code{kai} to host 1811use @command{telnet} to log in as user @code{kai} to host
1738@code{real.host}. 1812@code{real.host}.
1739 1813
@@ -1747,54 +1821,54 @@ should you want to add your own.
1747@section Filename completion 1821@section Filename completion
1748@cindex filename completion 1822@cindex filename completion
1749 1823
1750Filename completion works with @tramp{} for both completing methods, 1824Filename completion works with @value{tramp} for both completing methods,
1751user names and machine names (except multi hop methods) as well as for 1825user names and machine names (except multi hop methods) as well as for
1752files on remote machines. 1826files on remote machines.
1753 1827
1754If you, for example, type @kbd{C-x C-f @value{tramp-prefix}t 1828If you, for example, type @kbd{C-x C-f @value{prefix}t
1755@key{TAB}}, @tramp{} might give you as result the choice for 1829@key{TAB}}, @value{tramp} might give you as result the choice for
1756 1830
1757@example 1831@example
1758@ifset emacs 1832@ifset emacs
1759@value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop} tmp/ 1833@value{prefixsinglehop}telnet@value{postfixsinglehop} tmp/
1760@value{tramp-prefix-single-hop}toto@value{tramp-postfix} 1834@value{prefixsinglehop}toto@value{postfix}
1761@end ifset 1835@end ifset
1762@ifset xemacs 1836@ifset xemacs
1763@value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop} @value{tramp-prefix-single-hop}toto@value{tramp-postfix} 1837@value{prefixsinglehop}telnet@value{postfixsinglehop} @value{prefixsinglehop}toto@value{postfix}
1764@end ifset 1838@end ifset
1765@end example 1839@end example
1766 1840
1767@samp{@value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}} 1841@samp{@value{prefixsinglehop}telnet@value{postfixsinglehop}}
1768is a possible completion for the respective method, 1842is a possible completion for the respective method,
1769@ifset emacs 1843@ifset emacs
1770@samp{tmp/} stands for the directory @file{/tmp} on your local 1844@samp{tmp/} stands for the directory @file{/tmp} on your local
1771machine, 1845machine,
1772@end ifset 1846@end ifset
1773and @samp{@value{tramp-prefix-single-hop}toto@value{tramp-postfix}} 1847and @samp{@value{prefixsinglehop}toto@value{postfix}}
1774might be a host @tramp{} has detected in your @file{~/.ssh/known_hosts} 1848might be a host @value{tramp} has detected in your @file{~/.ssh/known_hosts}
1775file (given you're using default method @option{ssh}). 1849file (given you're using default method @option{ssh}).
1776 1850
1777If you go on to type @kbd{e @key{TAB}}, the minibuffer is completed to 1851If you go on to type @kbd{e @key{TAB}}, the minibuffer is completed to
1778@samp{@value{tramp-prefix}telnet@value{tramp-postfix-single-hop}}. 1852@samp{@value{prefix}telnet@value{postfixsinglehop}}.
1779Next @kbd{@key{TAB}} brings you all machine names @tramp{} detects in 1853Next @kbd{@key{TAB}} brings you all machine names @value{tramp} detects in
1780your @file{/etc/hosts} file, let's say 1854your @file{/etc/hosts} file, let's say
1781 1855
1782@example 1856@example
1783@value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}127.0.0.1@value{tramp-postfix} @value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}192.168.0.1@value{tramp-postfix} 1857@value{prefixsinglehop}telnet@value{postfixsinglehop}127.0.0.1@value{postfix} @value{prefixsinglehop}telnet@value{postfixsinglehop}192.168.0.1@value{postfix}
1784@value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}localhost@value{tramp-postfix} @value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}melancholia.danann.net@value{tramp-postfix} 1858@value{prefixsinglehop}telnet@value{postfixsinglehop}localhost@value{postfix} @value{prefixsinglehop}telnet@value{postfixsinglehop}melancholia.danann.net@value{postfix}
1785@value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}melancholia@value{tramp-postfix} 1859@value{prefixsinglehop}telnet@value{postfixsinglehop}melancholia@value{postfix}
1786@end example 1860@end example
1787 1861
1788Now you can choose the desired machine, and you can continue to 1862Now you can choose the desired machine, and you can continue to
1789complete file names on that machine. 1863complete file names on that machine.
1790 1864
1791As filename completion needs to fetch the listing of files from the 1865As filename completion needs to fetch the listing of files from the
1792remote machine, this feature is sometimes fairly slow. As @tramp{} 1866remote machine, this feature is sometimes fairly slow. As @value{tramp}
1793does not yet cache the results of directory listing, there is no gain 1867does not yet cache the results of directory listing, there is no gain
1794in performance the second time you complete filenames. 1868in performance the second time you complete filenames.
1795 1869
1796If the configuration files (@pxref{Customizing Completion}), which 1870If the configuration files (@pxref{Customizing Completion}), which
1797@tramp{} uses for analysis of completion, offer user names, those user 1871@value{tramp} uses for analysis of completion, offer user names, those user
1798names will be taken into account as well. 1872names will be taken into account as well.
1799 1873
1800 1874
@@ -1802,7 +1876,7 @@ names will be taken into account as well.
1802@section Dired 1876@section Dired
1803@cindex dired 1877@cindex dired
1804 1878
1805@tramp{} works transparently with dired, enabling you to use this powerful 1879@value{tramp} works transparently with dired, enabling you to use this powerful
1806file management tool to manage files on any machine you have access to 1880file management tool to manage files on any machine you have access to
1807over the Internet. 1881over the Internet.
1808 1882
@@ -1815,11 +1889,11 @@ and will only fetch the directory listing once.
1815@chapter Reporting Bugs and Problems 1889@chapter Reporting Bugs and Problems
1816@cindex bug reports 1890@cindex bug reports
1817 1891
1818Bugs and problems with @tramp{} are actively worked on by the development 1892Bugs and problems with @value{tramp} are actively worked on by the development
1819team. Feature requests and suggestions are also more than welcome. 1893team. Feature requests and suggestions are also more than welcome.
1820 1894
1821The @tramp{} mailing list is a great place to get information on working 1895The @value{tramp} mailing list is a great place to get information on working
1822with @tramp{}, solving problems and general discussion and advice on topics 1896with @value{tramp}, solving problems and general discussion and advice on topics
1823relating to the package. 1897relating to the package.
1824 1898
1825The mailing list is at @email{tramp-devel@@mail.freesoftware.fsf.org}. 1899The mailing list is at @email{tramp-devel@@mail.freesoftware.fsf.org}.
@@ -1830,9 +1904,9 @@ For help on subscribing to the list, send mail to the administrative
1830address, @email{tramp-devel-request@@mail.freesoftware.fsf.org}, with the 1904address, @email{tramp-devel-request@@mail.freesoftware.fsf.org}, with the
1831subject @samp{help}. 1905subject @samp{help}.
1832 1906
1833To report a bug in @tramp{}, you should execute @kbd{M-x tramp-bug}. This 1907To report a bug in @value{tramp}, you should execute @kbd{M-x tramp-bug}. This
1834will automatically generate a buffer with the details of your system and 1908will automatically generate a buffer with the details of your system and
1835@tramp{} version. 1909@value{tramp} version.
1836 1910
1837When submitting a bug report, please try to describe in excruciating 1911When submitting a bug report, please try to describe in excruciating
1838detail the steps required to reproduce the problem, the setup of the 1912detail the steps required to reproduce the problem, the setup of the
@@ -1849,9 +1923,9 @@ development team to analyze and correct the problem.
1849 1923
1850@itemize @bullet 1924@itemize @bullet
1851@item 1925@item
1852Where can I get the latest @tramp{}? 1926Where can I get the latest @value{tramp}?
1853 1927
1854@tramp{} is available under the URL below. 1928@value{tramp} is available under the URL below.
1855 1929
1856@noindent 1930@noindent
1857@uref{http://savannah.nongnu.org/download/tramp/} 1931@uref{http://savannah.nongnu.org/download/tramp/}
@@ -1871,10 +1945,10 @@ as XEmacs 21. XEmacs 20 is more problematic, see the notes in
1871 1945
1872The package was intended to work on Unix, and it really expects a 1946The package was intended to work on Unix, and it really expects a
1873Unix-like system on the remote end (except the @option{smb} method), 1947Unix-like system on the remote end (except the @option{smb} method),
1874but some people seemed to have some success getting it to work on NT 1948but some people seemed to have some success getting it to work on MS
1875Emacs. 1949Windows NT/2000/XP @value{emacsname}.
1876 1950
1877There is some informations on @tramp{} on NT at the following URL; 1951There is some informations on @value{tramp} on NT at the following URL;
1878many thanks to Joe Stoy for providing the information: 1952many thanks to Joe Stoy for providing the information:
1879@uref{ftp://ftp.comlab.ox.ac.uk/tmp/Joe.Stoy/} 1953@uref{ftp://ftp.comlab.ox.ac.uk/tmp/Joe.Stoy/}
1880 1954
@@ -1889,12 +1963,12 @@ Emacs? I think there was some issue with @command{ssh}?
1889 1963
1890 1964
1891@item 1965@item
1892I can't stop @value{ftp-package-name} starting with @value{emacs-name} 1966I can't stop @value{ftppackagename} starting with @value{emacsname}
1893 1967
1894@ifset emacs 1968@ifset emacs
1895@value{ftp-package-name} is loaded from @tramp{} automatically if you 1969@value{ftppackagename} is loaded from @value{tramp} automatically if you
1896require a file by the ftp method. Unfortunately, there are some Lisp 1970require a file by the ftp method. Unfortunately, there are some Lisp
1897packages which make @value{ftp-package-name} file name handlers active. 1971packages which make @value{ftppackagename} file name handlers active.
1898You can see it applying @kbd{C-h v file-name-handler-alist}: 1972You can see it applying @kbd{C-h v file-name-handler-alist}:
1899 1973
1900@example 1974@example
@@ -1907,27 +1981,27 @@ file-name-handler-alist's value is
1907@end example 1981@end example
1908 1982
1909Please try to find out which package is responsible for loading 1983Please try to find out which package is responsible for loading
1910@value{ftp-package-name}, and raise a bug report. 1984@value{ftppackagename}, and raise a bug report.
1911 1985
1912A workaround is to require @value{ftp-package-name} before @tramp{} in 1986A workaround is to require @value{ftppackagename} before @value{tramp} in
1913your @file{~/.emacs}, because @tramp{} cleans up the entries in 1987your @file{~/.emacs}, because @value{tramp} cleans up the entries in
1914@code{file-name-handler-alist}: 1988@code{file-name-handler-alist}:
1915 1989
1916@lisp 1990@lisp
1917;; @value{ftp-package-name} temporarily required 1991;; @value{ftppackagename} temporarily required
1918(require 'ange-ftp) 1992(require 'ange-ftp)
1919;; @tramp{} cleans up @code{file-name-handler-alist} 1993;; @value{tramp} cleans up @code{file-name-handler-alist}
1920(require 'tramp) 1994(require 'tramp)
1921@end lisp 1995@end lisp
1922@end ifset 1996@end ifset
1923 1997
1924@ifset xemacs 1998@ifset xemacs
1925Not all the older versions of @tramp{} supported @value{emacs-name} 1999Not all the older versions of @value{tramp} supported @value{emacsname}
1926correctly. The first thing to do is to make sure that you have the 2000correctly. The first thing to do is to make sure that you have the
1927latest version of @tramp{} installed. 2001latest version of @value{tramp} installed.
1928 2002
1929If you do, please try and find out exactly the conditions required for 2003If you do, please try and find out exactly the conditions required for
1930the @value{ftp-package-name} handlers to fire. If you can, putting a 2004the @value{ftppackagename} handlers to fire. If you can, putting a
1931breakpoint on @code{efs-ftp-path} and sending in the stack trace along 2005breakpoint on @code{efs-ftp-path} and sending in the stack trace along
1932with your bug report would make it easier for the developers to work out 2006with your bug report would make it easier for the developers to work out
1933what is going wrong. 2007what is going wrong.
@@ -1935,14 +2009,14 @@ what is going wrong.
1935 2009
1936 2010
1937@item 2011@item
1938File name completion does not work with @tramp{} 2012File name completion does not work with @value{tramp}
1939 2013
1940When you log in to the remote machine, do you see the output of 2014When you log in to the remote machine, do you see the output of
1941@command{ls} in color? If so, this may be the cause of your problems. 2015@command{ls} in color? If so, this may be the cause of your problems.
1942 2016
1943@command{ls} outputs @acronym{ANSI} escape sequences that your terminal 2017@command{ls} outputs @acronym{ANSI} escape sequences that your terminal
1944emulator interprets to set the colors. These escape sequences will 2018emulator interprets to set the colors. These escape sequences will
1945confuse @tramp{} however. 2019confuse @value{tramp} however.
1946 2020
1947In your @file{.bashrc}, @file{.profile} or equivalent on the remote 2021In your @file{.bashrc}, @file{.profile} or equivalent on the remote
1948machine you probably have an alias configured that adds the option 2022machine you probably have an alias configured that adds the option
@@ -1950,13 +2024,13 @@ machine you probably have an alias configured that adds the option
1950 2024
1951You should remove that alias and ensure that a new login @emph{does not} 2025You should remove that alias and ensure that a new login @emph{does not}
1952display the output of @command{ls} in color. If you still cannot use 2026display the output of @command{ls} in color. If you still cannot use
1953filename completion, report a bug to the @tramp{} developers. 2027filename completion, report a bug to the @value{tramp} developers.
1954 2028
1955 2029
1956@item 2030@item
1957File name completion does not work in large directories 2031File name completion does not work in large directories
1958 2032
1959@tramp{} uses globbing for some operations. (Globbing means to use the 2033@value{tramp} uses globbing for some operations. (Globbing means to use the
1960shell to expand wildcards such as `*.c'.) This might create long 2034shell to expand wildcards such as `*.c'.) This might create long
1961command lines, especially in directories with many files. Some shells 2035command lines, especially in directories with many files. Some shells
1962choke on long command lines, or don't cope well with the globbing 2036choke on long command lines, or don't cope well with the globbing
@@ -1970,18 +2044,10 @@ of those supports tilde expansion.
1970 2044
1971 2045
1972@item 2046@item
1973What kinds of systems does @tramp{} work on 2047How can I get notified when @value{tramp} file transfers are complete?
1974
1975@tramp{} really expects the remote system to be a Unix-like system. The
1976local system should preferably be Unix-like, as well, but @tramp{} might
1977work on NT with some tweaking.
1978
1979
1980@item
1981How can I get notified when @tramp{} file transfers are complete?
1982 2048
1983The following snippet can be put in your @file{~/.emacs} file. It 2049The following snippet can be put in your @file{~/.emacs} file. It
1984makes @value{emacs-name} beep after reading from or writing to the 2050makes @value{emacsname} beep after reading from or writing to the
1985remote host. 2051remote host.
1986 2052
1987@lisp 2053@lisp
@@ -2007,8 +2073,8 @@ remote host.
2007There's this @file{~/.sh_history} file on the remote host which keeps 2073There's this @file{~/.sh_history} file on the remote host which keeps
2008growing and growing. What's that? 2074growing and growing. What's that?
2009 2075
2010Sometimes, @tramp{} starts @code{ksh} on the remote host for tilde 2076Sometimes, @value{tramp} starts @code{ksh} on the remote host for tilde
2011expansion. Maybe @code{ksh} saves the history by default. @tramp{} 2077expansion. Maybe @code{ksh} saves the history by default. @value{tramp}
2012tries to turn off saving the history, but maybe you have to help. For 2078tries to turn off saving the history, but maybe you have to help. For
2013example, you could put this in your @file{.kshrc}: 2079example, you could put this in your @file{.kshrc}:
2014 2080
@@ -2025,7 +2091,7 @@ fi
2025@end example 2091@end example
2026 2092
2027 2093
2028@item @tramp{} doesn't transfer strings with more than 500 characters 2094@item @value{tramp} doesn't transfer strings with more than 500 characters
2029correctly 2095correctly
2030 2096
2031On some few systems, the implementation of @code{process-send-string} 2097On some few systems, the implementation of @code{process-send-string}
@@ -2042,16 +2108,16 @@ documentation of @code{tramp-chunksize}.
2042@chapter The inner workings of remote version control 2108@chapter The inner workings of remote version control
2043@cindex Version Control 2109@cindex Version Control
2044 2110
2045Unlike @value{ftp-package-name}, @tramp{} has full shell access to the 2111Unlike @value{ftppackagename}, @value{tramp} has full shell access to the
2046remote machine. This makes it possible to provide version control for 2112remote machine. This makes it possible to provide version control for
2047files accessed under @tramp{}. 2113files accessed under @value{tramp}.
2048 2114
2049The actual version control binaries must be installed on the remote 2115The actual version control binaries must be installed on the remote
2050machine, accessible in the directories specified in 2116machine, accessible in the directories specified in
2051@var{tramp-remote-path}. 2117@var{tramp-remote-path}.
2052 2118
2053This transparent integration with the version control systems is one of 2119This transparent integration with the version control systems is one of
2054the most valuable features provided by @tramp{}, but it is far from perfect. 2120the most valuable features provided by @value{tramp}, but it is far from perfect.
2055Work is ongoing to improve the transparency of the system. 2121Work is ongoing to improve the transparency of the system.
2056 2122
2057@menu 2123@menu
@@ -2068,7 +2134,7 @@ Work is ongoing to improve the transparency of the system.
2068 2134
2069The VC package uses the existence of on-disk revision control master 2135The VC package uses the existence of on-disk revision control master
2070files to determine if a given file is under revision control. These file 2136files to determine if a given file is under revision control. These file
2071tests happen on the remote machine through the standard @tramp{} mechanisms. 2137tests happen on the remote machine through the standard @value{tramp} mechanisms.
2072 2138
2073 2139
2074@node Remote Commands 2140@node Remote Commands
@@ -2082,7 +2148,7 @@ provide hooks for remote execution of commands.
2082 2148
2083To work around this, the functions @code{vc-do-command} and 2149To work around this, the functions @code{vc-do-command} and
2084@code{vc-simple-command} have been advised to intercept requests for 2150@code{vc-simple-command} have been advised to intercept requests for
2085operations on files accessed via @tramp{}. 2151operations on files accessed via @value{tramp}.
2086 2152
2087In the case of a remote file, the @code{shell-command} interface is 2153In the case of a remote file, the @code{shell-command} interface is
2088used, with some wrapper code, to provide the same functionality on the 2154used, with some wrapper code, to provide the same functionality on the
@@ -2094,7 +2160,7 @@ remote machine as would be seen on the local machine.
2094 2160
2095As there is currently no way to get access to the mtime of a file on a 2161As there is currently no way to get access to the mtime of a file on a
2096remote machine in a portable way, the @code{vc-workfile-unchanged-p} 2162remote machine in a portable way, the @code{vc-workfile-unchanged-p}
2097function is advised to call an @tramp{} specific function for remote files. 2163function is advised to call an @value{tramp} specific function for remote files.
2098 2164
2099The @code{tramp-vc-workfile-unchanged-p} function uses the functioning VC 2165The @code{tramp-vc-workfile-unchanged-p} function uses the functioning VC
2100diff functionality to determine if any changes have occurred between the 2166diff functionality to determine if any changes have occurred between the
@@ -2111,7 +2177,7 @@ this will remain the cost of remote version control.
2111 2177
2112VC will, by default, check for remote files and refuse to act on them 2178VC will, by default, check for remote files and refuse to act on them
2113when checking out files from the repository. To work around this 2179when checking out files from the repository. To work around this
2114problem, the function @code{vc-checkout} knows about @tramp{} files and 2180problem, the function @code{vc-checkout} knows about @value{tramp} files and
2115allows version control to occur. 2181allows version control to occur.
2116 2182
2117 2183
@@ -2129,7 +2195,7 @@ Minor implementation details, &c.
2129@node Remote File Ownership 2195@node Remote File Ownership
2130@subsection How VC determines who owns a workfile 2196@subsection How VC determines who owns a workfile
2131 2197
2132@value{emacs-name} provides the @code{user-full-name} function to 2198@value{emacsname} provides the @code{user-full-name} function to
2133return the login name of the current user as well as mapping from 2199return the login name of the current user as well as mapping from
2134arbitrary user id values back to login names. The VC code uses this 2200arbitrary user id values back to login names. The VC code uses this
2135functionality to map from the uid of the owner of a workfile to the 2201functionality to map from the uid of the owner of a workfile to the
@@ -2171,9 +2237,9 @@ comes into the picture. Each remote machine may have a different version
2171of the version control tools and, while this is painful, we need to 2237of the version control tools and, while this is painful, we need to
2172ensure that unavailable features are not used remotely. 2238ensure that unavailable features are not used remotely.
2173 2239
2174To resolve this issue, @tramp{} currently takes the sledgehammer 2240To resolve this issue, @value{tramp} currently takes the sledgehammer
2175approach of making the release values of the revision control tools 2241approach of making the release values of the revision control tools
2176local to each @tramp{} buffer, forcing VC to determine these values 2242local to each @value{tramp} buffer, forcing VC to determine these values
2177again each time a new file is visited. 2243again each time a new file is visited.
2178 2244
2179This has, quite obviously, some performance implications. Thankfully, 2245This has, quite obviously, some performance implications. Thankfully,
@@ -2181,7 +2247,7 @@ most of the common operations performed by VC do not actually require
2181that the remote version be known. This makes the problem far less 2247that the remote version be known. This makes the problem far less
2182apparent. 2248apparent.
2183 2249
2184Eventually these values will be captured by @tramp{} on a system by 2250Eventually these values will be captured by @value{tramp} on a system by
2185system basis and the results cached to improve performance. 2251system basis and the results cached to improve performance.
2186 2252
2187 2253
@@ -2196,17 +2262,17 @@ system basis and the results cached to improve performance.
2196@node Localname deconstruction 2262@node Localname deconstruction
2197@section Breaking a localname into its components. 2263@section Breaking a localname into its components.
2198 2264
2199@tramp{} file names are somewhat different, obviously, to ordinary file 2265@value{tramp} file names are somewhat different, obviously, to ordinary file
2200names. As such, the lisp functions @code{file-name-directory} and 2266names. As such, the lisp functions @code{file-name-directory} and
2201@code{file-name-nondirectory} are overridden within the @tramp{} 2267@code{file-name-nondirectory} are overridden within the @value{tramp}
2202package. 2268package.
2203 2269
2204Their replacements are reasonably simplistic in their approach. They 2270Their replacements are reasonably simplistic in their approach. They
2205dissect the filename, call the original handler on the localname and 2271dissect the filename, call the original handler on the localname and
2206then rebuild the @tramp{} file name with the result. 2272then rebuild the @value{tramp} file name with the result.
2207 2273
2208This allows the platform specific hacks in the original handlers to take 2274This allows the platform specific hacks in the original handlers to take
2209effect while preserving the @tramp{} file name information. 2275effect while preserving the @value{tramp} file name information.
2210 2276
2211 2277
2212@node Issues 2278@node Issues
@@ -2215,7 +2281,7 @@ effect while preserving the @tramp{} file name information.
2215@itemize @bullet 2281@itemize @bullet
2216@item The uuencode method does not always work. 2282@item The uuencode method does not always work.
2217 2283
2218Due to the design of @tramp{}, the encoding and decoding programs need to 2284Due to the design of @value{tramp}, the encoding and decoding programs need to
2219read from stdin and write to stdout. On some systems, @code{uudecode -o 2285read from stdin and write to stdout. On some systems, @code{uudecode -o
2220-} will read stdin and write the decoded file to stdout, on other 2286-} will read stdin and write the decoded file to stdout, on other
2221systems @code{uudecode -p} does the same thing. But some systems have 2287systems @code{uudecode -p} does the same thing. But some systems have
@@ -2231,29 +2297,29 @@ deleted.
2231But I have decided that this is too fragile to reliably work, so on some 2297But I have decided that this is too fragile to reliably work, so on some
2232systems you'll have to do without the uuencode methods. 2298systems you'll have to do without the uuencode methods.
2233 2299
2234@item @tramp{} does not work on XEmacs 20. 2300@item @value{tramp} does not work on XEmacs 20.
2235 2301
2236This is because it requires the macro @code{with-timeout} which does not 2302This is because it requires the macro @code{with-timeout} which does not
2237appear to exist in XEmacs 20. I'm somewhat reluctant to add an 2303appear to exist in XEmacs 20. I'm somewhat reluctant to add an
2238emulation macro to @tramp{}, but if somebody who uses XEmacs 20 steps 2304emulation macro to @value{tramp}, but if somebody who uses XEmacs 20 steps
2239forward and wishes to implement and test it, please contact me or the 2305forward and wishes to implement and test it, please contact me or the
2240mailing list. 2306mailing list.
2241 2307
2242@item The @tramp{} filename syntax differs between Emacs and XEmacs. 2308@item The @value{tramp} filename syntax differs between Emacs and XEmacs.
2243 2309
2244The Emacs maintainers wish to use a unified filename syntax for 2310The Emacs maintainers wish to use a unified filename syntax for
2245Ange-FTP and @tramp{} so that users don't have to learn a new 2311Ange-FTP and @value{tramp} so that users don't have to learn a new
2246syntax. It is sufficient to learn some extensions to the old syntax. 2312syntax. It is sufficient to learn some extensions to the old syntax.
2247 2313
2248For the XEmacs maintainers, the problems caused from using a unified 2314For the XEmacs maintainers, the problems caused from using a unified
2249filename syntax are greater than the gains. The XEmacs package system 2315filename syntax are greater than the gains. The XEmacs package system
2250uses EFS for downloading new packages. So, obviously, EFS has to be 2316uses EFS for downloading new packages. So, obviously, EFS has to be
2251installed from the start. If the filenames were unified, @tramp{} 2317installed from the start. If the filenames were unified, @value{tramp}
2252would have to be installed from the start, too. 2318would have to be installed from the start, too.
2253 2319
2254@ifset xemacs 2320@ifset xemacs
2255@strong{Note:} If you'ld like to use a similar syntax like 2321@strong{Note:} If you'ld like to use a similar syntax like
2256@value{ftp-package-name}, you need the following settings in your init 2322@value{ftppackagename}, you need the following settings in your init
2257file: 2323file:
2258 2324
2259@lisp 2325@lisp
@@ -2261,17 +2327,17 @@ file:
2261(require 'tramp) 2327(require 'tramp)
2262@end lisp 2328@end lisp
2263 2329
2264The autoload of the @value{emacs-name} @tramp{} package must be 2330The autoload of the @value{emacsname} @value{tramp} package must be
2265disabled. This can be achieved by setting file permissions @code{000} 2331disabled. This can be achieved by setting file permissions @code{000}
2266to the files @file{.../xemacs-packages/lisp/tramp/auto-autoloads.el*}. 2332to the files @file{.../xemacs-packages/lisp/tramp/auto-autoloads.el*}.
2267 2333
2268In case of unified filenames, all @value{emacs-name} download sites 2334In case of unified filenames, all @value{emacsname} download sites
2269are added to @code{tramp-default-method-alist} with default method 2335are added to @code{tramp-default-method-alist} with default method
2270@code{ftp} @xref{Default Method}. These settings shouldn't be touched 2336@code{ftp} @xref{Default Method}. These settings shouldn't be touched
2271for proper working of the @value{emacs-name} package system. 2337for proper working of the @value{emacsname} package system.
2272 2338
2273The syntax for unified filenames is described in the @tramp{} manual 2339The syntax for unified filenames is described in the @value{tramp} manual
2274for @value{emacs-other-name}. 2340for @value{emacsothername}.
2275@end ifset 2341@end ifset
2276 2342
2277@end itemize 2343@end itemize
diff --git a/man/trampver.texi b/man/trampver.texi
index 38862115ce9..fc90695823f 100644
--- a/man/trampver.texi
+++ b/man/trampver.texi
@@ -4,15 +4,16 @@
4@c In the Tramp CVS, the version number is auto-frobbed from 4@c In the Tramp CVS, the version number is auto-frobbed from
5@c configure.ac, so you should edit that file and run 5@c configure.ac, so you should edit that file and run
6@c "autoconf && ./configure" to change the version number. 6@c "autoconf && ./configure" to change the version number.
7@macro trampver{} 7@set trampver 2.0.40
82.0.39
9@end macro
10 8
11@c Other flags from configuration 9@c Other flags from configuration
12@set prefix /usr/local 10@set prefix /usr/local
13@set lispdir /usr/local/share/emacs/site-lisp 11@set lispdir /usr/local/share/emacs/site-lisp
14@set infodir /usr/local/info 12@set infodir /usr/local/info
15 13
14@c Formatting of the tramp program name consistent.
15@set tramp @sc{tramp}
16
16@c Some flags which make the text independent on the (X)Emacs flavor. 17@c Some flags which make the text independent on the (X)Emacs flavor.
17@c "emacs" resp "xemacs" are set in the Makefile. Default is "emacs". 18@c "emacs" resp "xemacs" are set in the Makefile. Default is "emacs".
18 19
@@ -24,41 +25,32 @@
24 25
25@c Emacs values. 26@c Emacs values.
26@ifset emacs 27@ifset emacs
27@set emacs-name Emacs 28@set emacsname Emacs
28@set emacs-dir emacs 29@set emacsdir emacs
29@set ftp-package-name Ange-FTP 30@set ftppackagename Ange-FTP
30@set tramp-prefix / 31@set prefix /
31@set tramp-prefix-single-hop 32@set prefixsinglehop
32@set tramp-postfix : 33@set postfix :
33@set tramp-postfix-single-hop : 34@set postfixsinglehop :
34@set tramp-postfix-multi-hop : 35@set postfixmultihop :
35@set japanese-manual tramp_ja-emacs.html 36@set emacsothername XEmacs
37@set emacsotherdir xemacs
38@set emacsotherfilename tramp-xemacs.html
39@set japanesemanual tramp_ja-emacs.html
36@end ifset 40@end ifset
37 41
38@c XEmacs counterparts. 42@c XEmacs counterparts.
39@ifset xemacs 43@ifset xemacs
40@set emacs-name XEmacs 44@set emacsname XEmacs
41@set emacs-dir xemacs 45@set emacsdir xemacs
42@set ftp-package-name EFS 46@set ftppackagename EFS
43@set tramp-prefix /[ 47@set prefix /[
44@set tramp-prefix-single-hop [ 48@set prefixsinglehop [
45@set tramp-postfix ] 49@set postfix ]
46@set tramp-postfix-single-hop / 50@set postfixsinglehop /
47@set tramp-postfix-multi-hop : 51@set postfixmultihop :
48@set japanese-manual tramp_ja-xemacs.html 52@set emacsothername Emacs
53@set emacsotherdir emacs
54@set emacsotherfilename tramp-emacs.html
55@set japanesemanual tramp_ja-xemacs.html
49@end ifset 56@end ifset
50
51@c Empty macro definitions in order to satisfy texi2dvi
52@macro otherflavor
53@end macro
54
55@macro installationchapter
56@end macro
57
58@c The installation chapter is needed only in case Tramp is installed
59@c standalone. That's why it is included from `trampinst.texi'.
60@c Otherwise, '/dev/null/' is taken, which leaves this part empty.
61
62@ignore
63 arch-tag: e0fe322c-e06b-46eb-bb5b-d091b521f41c
64@end ignore