aboutsummaryrefslogtreecommitdiffstats
path: root/man
diff options
context:
space:
mode:
authorKai Großjohann2002-09-22 13:23:36 +0000
committerKai Großjohann2002-09-22 13:23:36 +0000
commit16674e4f3b1e05ebece0b676fffe6119d9b2edd4 (patch)
tree6c207369992886f486d373b2f1d047cd83959174 /man
parent1fc85daee037058b772d7fa2726bc939fae4720c (diff)
downloademacs-16674e4f3b1e05ebece0b676fffe6119d9b2edd4.tar.gz
emacs-16674e4f3b1e05ebece0b676fffe6119d9b2edd4.zip
Sync with version 2.0.20. Lengthy ChangeLog follows:
2002-09-22 Kai Gro�ohann <grossjoh@ls6.informatik.uni-dortmund.de> Version 2.0.20 released. 2002-09-20 Kai Gro�ohann <grossjoh@ls6.informatik.uni-dortmund.de> * net/tramp.el (tramp-completion-function-alist): Escape open paren in docstring. (tramp-user-regexp, tramp-host-regexp): Allow empty strings. (tramp-handle-insert-file-contents): Call tramp-message-for-buffer instead of tramp-message. (tramp-open-connection-rsh): Handle empty string as user name. (tramp-open-connection-su): Handle empty string as host name. Handle nil user name. (tramp-handle-file-local-copy, tramp-handle-write-region) (tramp-completion-handle-file-name-all-completions) (tramp-open-connection-telnet, tramp-open-connection-rsh) (tramp-open-connection-su, tramp-post-connection) (tramp-maybe-open-connection, tramp-method-out-of-band-p) (tramp-get-connection-function, tramp-get-remote-sh) (tramp-get-rsh-program, tramp-get-rsh-args) (tramp-get-rcp-program, tramp-get-rcp-args) (tramp-get-rcp-keep-date-arg, tramp-get-su-program) (tramp-get-su-args, tramp-get-telnet-program) (tramp-get-telnet-args): Use `tramp-find-method', perhaps require additional args USER, HOST. (tramp-action-password, tramp-open-connection-telnet) (tramp-open-connection-su, tramp-open-connection-multi) (tramp-method-out-of-band-p): `tramp-method-out-of-band-p' now takes USER and HOST arguments, to be able to use `tramp-find-method'. Update callers. (tramp-find-method): New function. 2002-09-20 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-handle-insert-directory): Handle "--dired" in SWITCHES (by removing it). 2002-09-18 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-file-name-handler): Add `file-remote-p' property. 2002-09-17 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (top-level): Maybe autoload uudecode-decode-region. 2002-09-16 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-bug): Add tramp-methods. 2002-09-16 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-methods): Update docstring: tramp-encoding-command, tramp-decoding-command, tramp-encoding-function and tramp-decoding-function are not parameters anymore. (tramp-uuencode-region): Autoload it. 2002-09-13 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> Version 2.0.19 released. * net/tramp-uu.el: New file, implements uuencode in Lisp. * net/tramp.el (tramp-coding-commands): Use `tramp-uuencode-region' as local encoder for the uuencode based entries. 2002-09-13 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-handle-write-region): Wrong parens. 2002-09-13 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> Version 2.0.18 released. * net/tramp.el (tramp-perl-decode): Perl changes to accomodate older versions of Perl. Now tested with 5.004. Suggestion from Michael Albinus. 2002-09-12 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-find-inline-encoding): Call tramp-call-local-coding-command with nil for INPUT and OUTPUT. (tramp-call-local-coding-command): OUTPUT equals nil means to discard the output. INPUT equals nil means /dev/null. 2002-09-12 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-encoding-shell): Default to environment variable COMSPEC on Windows. (tramp-handle-write-region): More debugging output. (tramp-find-inline-encoding): Ditto. 2002-09-11 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-completion-handle-file-name-all-completions): Define `result1'. (tramp-parse-hosts-group): Discard IPv6 entries. 2002-09-11 Kai Gro�ohann <grossjoh@ls6.informatik.uni-dortmund.de> * net/tramp.el (tramp-post-connection): Only send Perl mime-encode/decode implementations when using inline method. (tramp-handle-file-local-copy) (tramp-handle-write-region, tramp-post-connection) (tramp-coding-commands, tramp-find-inline-encoding): For the inline encodings, distinguish between local and remote commands, instead of between commands and functions. (The local commands can be functions, too.) If the local host is a Windows machine, we can't expect the same commands to work there as on the remote host. (tramp-call-local-coding-command): New function for calling local encoding and decoding commands. (tramp-set-remote-encoding, tramp-get-remote-encoding) (tramp-set-remote-decoding, tramp-get-remote-decoding) (tramp-set-local-encoding, tramp-get-local-encoding) (tramp-set-local-decoding, tramp-get-local-decoding): New functions. (tramp-get-encoding-command, tramp-set-encoding-command) (tramp-get-decoding-command, tramp-set-decoding-command) (tramp-get-encoding-function, tramp-set-encoding-function) (tramp-get-decoding-function, tramp-set-decoding-function): Old functions, removed. 2002-09-10 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-open-connection-setup-interactive-shell): Change command to invoke /bin/sh slightly to make it compatible with the `rc' shell. Suggested by Daniel Pittman. 2002-09-10 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-handle-write-region): Added missing `)'. Hope it's the right place. 2002-09-09 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-open-connection-setup-interactive-shell): Do "exec env PS1='$ ' /bin/sh" instead of just "exec /bin/sh" in order to get a sane shell prompt. If people have ${CWD}, say, in their shell prompt, then the default login shell might display something harmless, but the /bin/sh will display a dollar sign which confused the subsequent prompt recognition. (tramp-multi-action-password): More debugging output. (tramp-encoding-shell): Renamed from tramp-sh-program. More documentation. Default to cmd.exe on Windows NT. (tramp-encoding-command-switch): New variable. Use instead of hard-wired "-c" which is only good for /bin/sh. (tramp-encoding-reads-stdin): New variable. If t, commands are called like "/bin/sh -c COMMAND <INPUT", if nil, they are called like "/bin/sh -c COMMAND INPUT", ie the input file is the last argument. (tramp-multi-sh-program): Always default to tramp-encoding-shell. (tramp-handle-file-local-copy, tramp-handle-write-region): Respect tramp-encoding-shell and friends. (tramp-find-inline-encoding): Use new-style calls for checking if the local commands work. 2002-09-07 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-methods): Remove `tramp-completion-function' entries. They are handled now by `tramp-completion-function-alist'. (tramp-completion-function): Defvar removed. I've never used it. Hmm. (tramp-get-completion-function) (tramp-get-completion-rsh, tramp-get-completion-ssh) (tramp-get-completion-telnet, tramp-get-completion-su): Functions removed as well. Not necessary any longer due to extended customization means. (tramp-completion-function-alist): New defcustom. Holds all FUNCTION FILE pairs used for user and host name completion relevant for METHOD. (tramp-completion-function-alist-rsh) (tramp-completion-function-alist-ssh) (tramp-completion-function-alist-telnet) (tramp-completion-function-alist-su): Defconst for initializing `tramp-completion-function-alist'. Unfortunately, mainly UNIX-like values are known for me until now. Needs to be completed for at least VMS++ like operating systems. (tramp-set-completion-function) (tramp-get-completion-function): New functions for configuration of `tramp-completion-function-alist'. The old definition of `tramp-get-completion-function' has been discarded. (tramp-completion-handle-file-name-all-completions): Change function call for user/host completion according to definition in `tramp-completion-function-alist'. (tramp-parse-passwd): Added exception handling for "root", because `tramp-get-completion-su' (the previous place for this stuff) doesn't exist any longer. 2002-09-07 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-enter-password): Use `tramp-password-end-of-line' to terminate the line. (tramp-bug): Include new variable `tramp-password-end-of-line'. (tramp-password-end-of-line): New variable. People who use plink under Windows might have to issue "\r\n" after the password, but they need to send just "\n" after the other commands. So this variable was introduced to complement `tramp-rsh-end-of-line'. (tramp-wait-for-output, tramp-post-connection): Allow "\r" at end of line of the output delimiter. 2002-09-06 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-handle-file-local-copy, tramp-find-shell) (tramp-open-connection-setup-interactive-shell): Add some comments about Douglas Grey Stephen's suggestions to make Tramp work better with plink under Windows. I'm not sure what to think of them, but now I have a guinea pig to try it out on. Said guinea pig is having other problems, though... Also remove some commented-out code. 2002-09-06 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-get-completion-methods): Algorithm slightly tuned. (tramp-get-completion-user-host): Accept user names as they are if typed until "@". (tramp-completion-mode): Replace `last-input-char' by modern `last-input-event'. Check for `event-modifiers'. 2002-09-06 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (file-expand-wildcards): Corrected check to see if advising is necessary. 2002-09-05 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-postfix-single-method-format) (tramp-postfix-multi-method-format) (tramp-postfix-multi-hop-format) (tramp-postfix-user-format): New format strings. (tramp-postfix-single-method-regexp) (tramp-postfix-multi-method-regexp) (tramp-postfix-multi-hop-regexp) (tramp-postfix-user-regexp) (tramp-make-multi-tramp-file-format) (tramp-make-tramp-file-name): Apply them. (tramp-completion-handle-file-name-all-completions): Fix for invoking ange-ftp in case of "/ftp:xxx" file names. 2002-09-04 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-prefix-format) (tramp-postfix-host-format): New format strings. (tramp-prefix-regexp, tramp-method-regexp) (tramp-postfix-single-method-regexp) (tramp-postfix-multi-method-regexp) (tramp-postfix-multi-hop-regexp) (tramp-user-regexp, tramp-postfix-user-regexp) (tramp-host-regexp, tramp-postfix-host-regexp) (tramp-path-regexp): New atomar regular expressions. If corresponding format strings exist, derived from them. (tramp-file-name-structure) (tramp-multi-file-name-structure) (tramp-multi-file-name-hop-structure) (tramp-make-multi-tramp-file-format) (tramp-completion-mode) (tramp-completion-dissect-file-name) (tramp-parse-rhosts-group) (tramp-parse-shosts-group) (tramp-parse-hosts-group) (tramp-parse-passwd-group): Apply these expressions. (tramp-file-name-structure-unified) (tramp-file-name-structure-separate) (tramp-make-tramp-file-format-unified) (tramp-make-tramp-file-format-separate) (tramp-make-tramp-file-format) (tramp-make-tramp-file-user-nil-format-unified) (tramp-make-tramp-file-user-nil-format-separate) (tramp-make-tramp-file-user-nil-format) (tramp-multi-file-name-structure-unified) (tramp-multi-file-name-structure-separate) (tramp-multi-file-name-hop-structure-unified) (tramp-multi-file-name-hop-structure-separate) (tramp-make-multi-tramp-file-format-unified) (tramp-make-multi-tramp-file-format-separate): Removed. (tramp-make-tramp-file-name): Allow partial tramp file names. Generate tramp file format on-the-fly depending on parameters. Apply atomar format strings resp expressions. (tramp-get-completion-methods) (tramp-get-completion-user-host): Apply `tramp-make-tramp-file-name'. (tramp-parse-hosts-group): Take all host names and IP addresses into account. (tramp-bug): Remove `tramp-make-tramp-file-format'. 2002-09-01 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-methods): Add `tramp-completion-function' for "su" and "sudo". (tramp-get-completion-telnet): Implement it. (tramp-parse-hosts) (tramp-parse-hosts-group) (tramp-get-completion-su) (tramp-parse-passwd) (tramp-parse-passwd-group): New functions. 2002-08-31 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-completion-mode): Check for `last-input-char'. (tramp-completion-file-name-handler-alist): Add handler for `file-exists-p. (tramp-completion-handle-file-exists-p): New function. (tramp-completion-handle-file-name-completion): Simplified. (tramp-completion-dissect-file-name): Regexp's reorganised. (tramp-completion-handle-file-name-all-completions): Call completion-function only if `user' or `host' is given. (tramp-get-completion-user-host): New function. (tramp-get-completion-rsh) (tramp-get-completion-ssh): Apply it. 2002-08-29 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-completion-file-name-handler-alist): Add handler for `expand-file-name'. (tramp-completion-handle-expand-file-name): New function. 2002-08-26 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-completion-mode): New function. (tramp-completion-handle-file-name-directory) (tramp-completion-handle-file-name-all-completions): Apply it. (tramp-methods): Remove double definition of `ssh1-old' and `ssh2-old'. (tramp-point-at-eol): New defalias. (tramp-parse-rhosts-group) (tramp-parse-shosts-group):: Apply it. 2002-08-25 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-get-completion-methods) (tramp-get-completion-rsh) (tramp-get-completion-ssh): Add "[" for Xemacs. (tramp-completion-file-name-regexp-separate): Expression adapted. (tramp-completion-file-name-handler-alist): Add handler for `file-name-directory' and `file-name-nondirectory'. (tramp-completion-handle-file-name-directory) (tramp-completion-handle-file-name-nondirectory) (tramp-completion-run-real-handler): New functions. (tramp-completion-file-name-handler) (tramp-completion-handle-file-name-all-completions): Apply `tramp-completion-run-real-handler'. (tramp-parse-rhosts) (tramp-parse-shosts): Use `with-temp-buffer'. `result� renamed to `res' (otherwise side effects in XEmacs). 2002-08-24 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-completion-file-name-regexp) (tramp-completion-file-name-handler-alist) (tramp-flatten-list) (tramp-completion-dissect-file-name) (tramp-get-completion-rsh) (tramp-parse-rhosts) (tramp-parse-rhosts-group) (tramp-get-completion-ssh): Doc string tuned. (tramp-methods): Doc string and custom type extended for `tramp-completion-function'. (tramp-completion-function): Variable added. Is it really used? Other variables like `tramp-completion-function' aren't used. (tramp-completion-file-name-handler-alist): Add handler for `file-name-completion'. (tramp-completion-handle-file-name-completion): New function. 2002-08-18 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-parse-rhosts) (tramp-parse-rhosts-group) (tramp-parse-shosts) (tramp-parse-shosts-group): New functions. 2002-08-17 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-completion-dissect-file-name) (tramp-completion-dissect-file-name1): New functions. 2002-08-16 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-get-completion-function) (tramp-get-completion-rsh) (tramp-get-completion-ssh) (tramp-get-completion-telnet): New functions. (tramp-methods): Add `tramp-completion-function' for all methods. 2002-08-15 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-get-completion-methods): New function. (tramp-find-default-method): Allow host to be nil (like user). 2002-08-14 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-completion-file-name-regexp-unified) (tramp-completion-file-name-regexp-separate) (tramp-completion-file-name-regexp) (tramp-completion-file-name-handler-alist): New defcustoms. (tramp-completion-file-name-handler): New function. Add `tramp-completion-file-name-handler' to `file-name-handler-alist'. (tramp-run-real-handler): Add `tramp-completion-file-name-handler' to `inhibit-file-name-handlers'. (tramp-completion-handle-file-name-all-completions) (tramp-completion-handle-file-name-completion): New functions. 2002-08-12 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-invoke-ange-ftp): `tramp-disable-ange-ftp' must be called again after activating `ange-ftp'. (tramp-ange-ftp-file-name-p): Check for Xemacs. 2002-08-08 Michael Albinus <Michael.Albinus@alcatel.de> * net/tramp.el (tramp-do-copy-or-rename-file): Don't pass KEEP-DATE to tramp-invoke-ange-ftp 'rename. (tramp-handle-write-region): Don't pass LOCKNAME and CONFIRM to tramp-invoke-ange-ftp 'write-region. (tramp-handle-set-file-modes): Change order of FILENAME and MODE passing to tramp-invoke-ange-ftp 'set-file-modes. (tramp-flatten-list): New function. Maybe this functionality does exist already elsewhere in the libraries. (tramp-invoke-ange-ftp): Apply `tramp-flatten-list' to parameter list in order to avoid nested lists, f.e. when invoked from `tramp-handle-dired-call-process'. 2002-09-05 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-chunksize): New kluge variable. (tramp-send-region): If tramp-chunksize is non-nil, send region in parts and sleep 0.1 seconds between chunks. 2002-09-03 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-handle-insert-directory): Use `insert-buffer-substring' instead of `insert-buffer', which is not supposed to be used from Lisp. Remember old point in a variable instead of using `mark'. Suggestion from Stefan Monnier. (tramp-unified-filenames): New variable. Use it in default value of other filename variables. (file-expand-wildcards): Don't advise unless "[" and "]" are used in the filename format. 2002-09-01 Kai Gro�ohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> * net/tramp.el (tramp-methods): Remove duplicate definition of ssh1-old and ssh2-old.
Diffstat (limited to 'man')
-rw-r--r--man/tramp.texi733
1 files changed, 490 insertions, 243 deletions
diff --git a/man/tramp.texi b/man/tramp.texi
index daf32c7c184..66b16b23fd7 100644
--- a/man/tramp.texi
+++ b/man/tramp.texi
@@ -8,6 +8,12 @@
8@c This is *so* much nicer :) 8@c This is *so* much nicer :)
9@footnotestyle end 9@footnotestyle end
10 10
11@c In the Tramp CVS, the version number is auto-frobbed from the
12@c Makefile, so you should edit the top-level Makefile to change
13@c the version number.
14@macro trampver{}
152.0.20
16@end macro
11 17
12@c Entries for @command{install-info} to use 18@c Entries for @command{install-info} to use
13@dircategory Emacs 19@dircategory Emacs
@@ -21,39 +27,46 @@
21@sc{tramp} 27@sc{tramp}
22@end macro 28@end macro
23 29
24@c Copying permissions, et al 30@c Distinguish between GNU Emacs and XEmacs. Derived from the
25@copying 31@c Makefile variable $(EMACS-ID). Valid values are `emacs' and `xemacs'.
26This file documents @tramp{}, a remote file editing package for Emacs and 32@set emacs
27XEmacs. 33
28 34@c Some flags which make the text independent on the (X)Emacs flavor.
29Copyright @copyright{} 1999, 2000, 2001, 2002 Free Software 35@c GNU Emacs values.
30Foundation, Inc. 36@ifset emacs
31 37@set emacs-name Emacs
32@quotation 38@set emacs-dir emacs
33Permission is granted to copy, distribute and/or modify this document 39@set ftp-package-name Ange-FTP
34under the terms of the GNU Free Documentation License, Version 1.1 or 40@set tramp-prefix /
35any later version published by the Free Software Foundation; with no 41@set tramp-prefix-single-hop
36Invariant Sections, with the Front-Cover texts being ``A GNU 42@set tramp-postfix :
37Manual'', and with the Back-Cover Texts as in (a) below. A copy of the 43@set tramp-postfix-single-hop :
38license is included in the section entitled ``GNU Free Documentation 44@set tramp-postfix-multi-hop :
39License'' in the Emacs manual. 45@end ifset
40 46
41(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify 47@c XEmacs counterparts.
42this GNU Manual, like GNU software. Copies published by the Free 48@ifset xemacs
43Software Foundation raise funds for GNU development.'' 49@set emacs-name XEmacs
44 50@set emacs-dir xemacs
45This document is part of a collection distributed under the GNU Free 51@set ftp-package-name EFS
46Documentation License. If you want to distribute this document 52@set tramp-prefix /[
47separately from the collection, you can do so by adding a copy of the 53@set tramp-prefix-single-hop [
48license to the document, as described in section 6 of the license. 54@set tramp-postfix ]
49@end quotation 55@set tramp-postfix-single-hop /
50@end copying 56@set tramp-postfix-multi-hop :
51 57@end ifset
58
59@c Macros for formatting a filename.
60@c trampfn is for a full filename, trampfnmhp means method, host, path
61@c were given, and so on.
62@macro trampfn(method, user, host, path)
63@value{tramp-prefix}@value{method}@value{user}@@@value{host}@value{tramp-postfix}@value{path}
64@end macro
52 65
53@tex 66@tex
54 67
55@titlepage 68@titlepage
56@title @tramp{} User Manual 69@title @tramp{} version @trampver{} User Manual
57 70
58@author by Daniel Pittman 71@author by Daniel Pittman
59@author based on documentation by Kai Gro@ss{}johann 72@author based on documentation by Kai Gro@ss{}johann
@@ -66,16 +79,19 @@ license to the document, as described in section 6 of the license.
66 79
67@ifnottex 80@ifnottex
68@node Top, Overview, (dir), (dir) 81@node Top, Overview, (dir), (dir)
69@top @tramp{} User Manual 82@top @tramp{} version @trampver{} User Manual
83
84This file documents @tramp{} version @trampver{}, a remote file
85editing package for @value{emacs-name}.
70 86
71@tramp{} stands for `Transparent Remote (file) Access, Multiple 87@tramp{} stands for `Transparent Remote (file) Access, Multiple
72Protocol'. This package provides remote file editing, similar to 88Protocol'. This package provides remote file editing, similar to
73@cite{Ange-FTP} and @cite{EFS}. 89@value{ftp-package-name}.
74 90
75The difference is that Ange-FTP uses FTP to transfer files between the 91The difference is that @value{ftp-package-name} uses FTP to transfer
76local and the remote host, whereas @tramp{} uses a combination of 92files between the local and the remote host, whereas @tramp{} uses a
77@command{rsh} and @command{rcp} or other work-alike programs, such as 93combination of @command{rsh} and @command{rcp} or other work-alike
78@command{ssh}/@command{scp}. 94programs, such as @command{ssh}/@command{scp}.
79 95
80You can find the latest version of this document on the web at 96You can find the latest version of this document on the web at
81@uref{http://www.freesoftware.fsf.org/tramp/}. 97@uref{http://www.freesoftware.fsf.org/tramp/}.
@@ -102,20 +118,21 @@ well as the usual Savannah archives.
102 118
103@menu 119@menu
104* Overview:: What @tramp{} can and cannot do. 120* Overview:: What @tramp{} can and cannot do.
121* Copying:: The license for this documentation.
105 122
106For the end user: 123For the end user:
107* Obtaining @tramp{}:: How to obtain @tramp{}. 124* Obtaining @tramp{}:: How to obtain @tramp{}.
108* History:: History of @tramp{} 125* History:: History of @tramp{}.
109* Installation:: Installing @tramp{} with your (X)Emacs. 126* Installation:: Installing @tramp{} with your @value{emacs-name}.
110* Configuration:: Configuring @tramp{} for use. 127* Configuration:: Configuring @tramp{} for use.
111* Usage:: An overview of the operation of @tramp{}. 128* Usage:: An overview of the operation of @tramp{}.
112* Bug Reports:: Reporting Bugs and Problems 129* Bug Reports:: Reporting Bugs and Problems.
113* Frequently Asked Questions:: Questions and answers from the mailing list. 130* Frequently Asked Questions:: Questions and answers from the mailing list.
114 131
115For the developer: 132For the developer:
116* Version Control:: The inner workings of remote version control. 133* Version Control:: The inner workings of remote version control.
117* Files directories and paths:: How file names, directories and paths are mangled and managed. 134* Files directories and paths:: How file names, directories and paths are mangled and managed.
118* Issues:: 135* Issues:: Debatable Issues and What Was Decided.
119 136
120@detailmenu 137@detailmenu
121 --- The Detailed Node Listing --- 138 --- The Detailed Node Listing ---
@@ -128,14 +145,17 @@ Configuring @tramp{} for use
128* Multi-hop Methods:: Connecting to a remote host using multiple hops. 145* Multi-hop Methods:: Connecting to a remote host using multiple hops.
129* Default Method:: Selecting a default method. 146* Default Method:: Selecting a default method.
130* Customizing Methods:: Using Non-Standard Methods. 147* Customizing Methods:: Using Non-Standard Methods.
148* Customizing Completion:: Selecting config files for user/host name completion.
131* Remote Programs:: How @tramp{} finds and uses programs on the remote machine. 149* Remote Programs:: How @tramp{} finds and uses programs on the remote machine.
132* Remote shell setup:: 150* Remote shell setup:: Remote shell setup hints.
151* Windows setup hints:: Issues with Cygwin ssh.
133 152
134Using @tramp 153Using @tramp
135 154
136* Filename Syntax:: @tramp{} filename conventions. 155* Filename Syntax:: @tramp{} filename conventions.
137* Multi-hop filename syntax:: Multi-hop filename conventions 156* Multi-hop filename syntax:: Multi-hop filename conventions.
138* Dired:: Dired and filename completion. 157* Filename completion:: Filename completion.
158* Dired:: Dired.
139 159
140The inner workings of remote version control 160The inner workings of remote version control
141 161
@@ -143,7 +163,7 @@ The inner workings of remote version control
143* Remote Commands:: Executing the version control commands on the remote machine. 163* Remote Commands:: Executing the version control commands on the remote machine.
144* Changed workfiles:: Detecting if the working file has changed. 164* Changed workfiles:: Detecting if the working file has changed.
145* Checking out files:: Bringing the workfile out of the repository. 165* Checking out files:: Bringing the workfile out of the repository.
146* Miscellaneous Version Control:: Things related to Version Control that don't fit elsewhere 166* Miscellaneous Version Control:: Things related to Version Control that don't fit elsewhere.
147 167
148Things related to Version Control that don't fit elsewhere 168Things related to Version Control that don't fit elsewhere
149 169
@@ -157,15 +177,14 @@ How file names, directories and paths are mangled and managed.
157@end detailmenu 177@end detailmenu
158@end menu 178@end menu
159 179
160
161@node Overview 180@node Overview
162@chapter An overview of @tramp 181@chapter An overview of @tramp
163@cindex overview 182@cindex overview
164 183
165After the installation of @tramp{} into your Emacs, you will be able 184After the installation of @tramp{} into your @value{emacs-name}, you
166to access files on remote machines as though they were local. Access 185will be able to access files on remote machines as though they were
167to the remote file system for editing files, version control, and 186local. Access to the remote file system for editing files, version
168@command{dired} are transparently enabled. 187control, and @command{dired} are transparently enabled.
169 188
170Your access to the remote machine can be with the @command{rsh}, 189Your access to the remote machine can be with the @command{rsh},
171@command{rlogin}, @command{telnet} programs or with any similar 190@command{rlogin}, @command{telnet} programs or with any similar
@@ -229,8 +248,9 @@ what happens:
229@tramp{} discovers that it needs a connection to the host. So it 248@tramp{} discovers that it needs a connection to the host. So it
230invokes @samp{telnet @var{host}} or @samp{rsh @var{host} -l 249invokes @samp{telnet @var{host}} or @samp{rsh @var{host} -l
231@var{user}} or a similar tool to connect to the remote host. 250@var{user}} or a similar tool to connect to the remote host.
232Communication with this process happens through an Emacs buffer, that 251Communication with this process happens through an
233is, the output from the remote end goes into a buffer. 252@value{emacs-name} buffer, that is, the output from the remote end
253goes into a buffer.
234 254
235@item 255@item
236The remote host may prompt for a login name (for @command{telnet}). The 256The remote host may prompt for a login name (for @command{telnet}). The
@@ -254,8 +274,8 @@ If @tramp{} sees neither of them after a certain period of time (a minute,
254say), then it issues an error message saying that it couldn't find the 274say), then it issues an error message saying that it couldn't find the
255remote shell prompt and shows you what the remote host has sent. 275remote shell prompt and shows you what the remote host has sent.
256 276
257If @tramp{} sees a `login failed' message, it tells you so, aborts the 277If @tramp{} sees a @samp{login failed} message, it tells you so,
258login attempt and allows you to try again. 278aborts the login attempt and allows you to try again.
259 279
260@item 280@item
261Suppose that the login was successful and @tramp{} sees the shell prompt 281Suppose that the login was successful and @tramp{} sees the shell prompt
@@ -293,10 +313,12 @@ For inline transfers, @tramp{} issues a command like @samp{mimencode -b
293buffer that's used for communication, then decodes that output to 313buffer that's used for communication, then decodes that output to
294produce the file contents. 314produce the file contents.
295 315
296For out-of-band transfers, @tramp{} issues a command like @samp{rcp 316For out-of-band transfers, @tramp{} issues a command like the following:
297user@@host:/path/to/remote/file /tmp/tramp.4711} and then reads the local 317@example
298temporary file @file{/tmp/tramp.4711} into a buffer and deletes the 318rcp user@@host:/path/to/remote/file /tmp/tramp.4711
299temporary file. 319@end example
320It then reads the local temporary file @file{/tmp/tramp.4711} into a
321buffer and deletes the temporary file.
300 322
301@item 323@item
302You now edit the buffer contents, blithely unaware of what has happened 324You now edit the buffer contents, blithely unaware of what has happened
@@ -314,6 +336,36 @@ I hope this has provided you with a basic overview of what happens
314behind the scenes when you open a file with @tramp{}. 336behind the scenes when you open a file with @tramp{}.
315 337
316 338
339@c Copying permissions, et al
340@node Copying
341@chapter Copying.
342@cindex copying
343
344@copying
345Copyright @copyright{} 1999, 2000, 2001, 2002 Free Software
346Foundation, Inc.
347
348@quotation
349Permission is granted to copy, distribute and/or modify this document
350under the terms of the GNU Free Documentation License, Version 1.1 or
351any later version published by the Free Software Foundation; with no
352Invariant Sections, with the Front-Cover texts being ``A GNU
353Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
354license is included in the section entitled ``GNU Free Documentation
355License'' in the Emacs manual.
356
357(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
358this GNU Manual, like GNU software. Copies published by the Free
359Software Foundation raise funds for GNU development.''
360
361This document is part of a collection distributed under the GNU Free
362Documentation License. If you want to distribute this document
363separately from the collection, you can do so by adding a copy of the
364license to the document, as described in section 6 of the license.
365@end quotation
366@end copying
367
368
317@c For the end user 369@c For the end user
318@node Obtaining @tramp{} 370@node Obtaining @tramp{}
319@chapter Obtaining @tramp{}. 371@chapter Obtaining @tramp{}.
@@ -333,13 +385,18 @@ is the latest version of the code and may contain incomplete features or
333new issues. Use these versions at your own risk. 385new issues. Use these versions at your own risk.
334 386
335Instructions for obtaining the latest development version of @tramp{} 387Instructions for obtaining the latest development version of @tramp{}
336from CVS can be found by going to the Savannah project page at 388from CVS can be found by going to the Savannah project page at the
337@uref{http://savannah.gnu.org/projects/tramp/} and then clicking on the 389following URL and then clicking on the CVS link in the navigation bar at
338CVS link in the navigation bar at the top. Or follow the example 390the top.
339session below: 391
392@noindent
393@uref{http://savannah.gnu.org/projects/tramp/}
394
395@noindent
396Or follow the example session below:
340 397
341@example 398@example
342] @strong{cd ~/lisp} 399] @strong{cd ~/@value{emacs-dir}}
343] @strong{cvs -d:pserver:anoncvs@@subversions.gnu.org:/cvsroot/tramp login} 400] @strong{cvs -d:pserver:anoncvs@@subversions.gnu.org:/cvsroot/tramp login}
344 401
345(Logging in to anoncvs@@subversions.gnu.org) 402(Logging in to anoncvs@@subversions.gnu.org)
@@ -349,12 +406,13 @@ CVS password: @strong{(just hit RET here)}
349] @strong{cvs -z3 -d:pserver:anoncvs@@subversions.gnu.org:/cvsroot/tramp co tramp} 406] @strong{cvs -z3 -d:pserver:anoncvs@@subversions.gnu.org:/cvsroot/tramp co tramp}
350@end example 407@end example
351 408
352You should now have a directory @file{~/lisp/tramp} containing the latest 409@noindent
410You should now have a directory @file{~/@value{emacs-dir}/tramp} containing the latest
353version of @tramp{}. You can fetch the latest updates from the repository 411version of @tramp{}. You can fetch the latest updates from the repository
354by issuing the command: 412by issuing the command:
355 413
356@example 414@example
357] @strong{cd ~/lisp/tramp} 415] @strong{cd ~/@value{emacs-dir}/tramp}
358] @strong{cvs update -d} 416] @strong{cvs update -d}
359@end example 417@end example
360 418
@@ -378,111 +436,122 @@ filenames in July 2002.
378 436
379 437
380@node Installation 438@node Installation
381@chapter Installing @tramp{} into Emacs or XEmacs 439@chapter Installing @tramp{} into @value{emacs-name}.
382@cindex installation 440@cindex installation
383 441
384If you use the version that comes with your Emacs or the XEmacs 442If you use the version that comes with your @value{emacs-name}, the
385package, the following information is not necessary. Installing 443following information is not necessary. Installing @tramp{} into your
386@tramp{} into your Emacs or XEmacs is a relatively easy process, at 444@value{emacs-name} is a relatively easy process, at least compared
387least compared to rebuilding your machine from scratch. ;) 445to rebuilding your machine from scratch. ;)
388 446
389Seriously though, the installation should be a fairly simple matter. 447Seriously though, the installation should be a fairly simple matter.
390 448
391The easiest way to proceed is as follows: 449The easiest way to proceed is as follows:
392 450
393@itemize 451@itemize @bullet
394@item 452@item
395Choose a directory, say @file{~/emacs/}. Change into that directory and 453Choose a directory, say @file{~/@value{emacs-dir}/}. Change into that directory and
396unpack the tarball. This will give you a directory 454unpack the tarball. This will give you a directory
397@file{~/emacs/tramp/} which contains subdirectories @file{lisp} for the 455@file{~/@value{emacs-dir}/tramp/} which contains subdirectories @file{lisp} for the
398Lisp code and @file{texi} for the documentation. 456Lisp code and @file{texi} for the documentation.
399 457
400@item 458@item
401Optionally byte-compile all files in the Lisp directory, 459Optionally byte-compile all files in the Lisp directory,
402@file{~/emacs/tramp/lisp/}, by issuing a command like the following from 460@file{~/@value{emacs-dir}/tramp/lisp/}, by issuing a command like the following from
403the top level directory @file{~/emacs/tramp/}: 461the top level directory @file{~/@value{emacs-dir}/tramp/}:
462
404@example 463@example
405make EMACS=emacs all # for Emacs users 464make EMACS=@value{emacs-dir} all
406make EMACS=xemacs all # for XEmacs users
407@end example 465@end example
408 466
409@item 467@item
410NOTE: 468NOTE: If you run into problems running the example @command{make}
411@example 469command, don't dispare. You can still byte compile the @file{*.el}
412If you run into problems running the example @command{make} 470files by opening @value{emacs-name} in @command{dired} (@command{C-x
413commands, don't dispare. You can still byte compile the 471d}) mode, at @file{~/@value{emacs-dir}/tramp/lisp}. Mark the lisp files with
414@file{*.el} files by opening emacs in @command{dired} 472@kbd{m}, then press @kbd{B} to byte compile your selections.
415(@command{C-x d}) mode, at @file{~/tramp/lisp}. Mark the lisp 473
416files with @kbd{m}, then press @kbd{B} to byte compile 474Something similar can be done to create the info manual. Just change
417your selections. 475to directory @file{~/@value{emacs-dir}/tramp/texi} and load the
418 476@file{tramp.texi} file in @value{emacs-name}. Then press @kbd{M-x
419Something similar can be done to create the info manual. 477makeinfo-buffer @key{RET}} to generate @file{tramp.info}.
420Just cd to @file{~/emacs/tramp/texi} and load the @file{tramp.texi}
421file in emacs. Then press @kbd{M-x makeinfo-buffer <RET>}
422to generate @file{tramp.info}.
423@end example
424 478
425@item 479@item
426Tell Emacs about the new Lisp directory and the @tramp{} package 480Tell @value{emacs-name} about the new Lisp directory and the
427with the following lines in @file{~/.emacs}: 481@tramp{} package with the following lines in @file{~/.emacs}:
482
428@lisp 483@lisp
429(add-to-list 'load-path "~/emacs/tramp/lisp/") 484(add-to-list 'load-path "~/@value{emacs-dir}/tramp/lisp/")
430(require 'tramp) 485(require 'tramp)
431@end lisp 486@end lisp
432 487
433@item 488@item
434To be able to read the Info documentation, create a file 489To be able to read the Info documentation, create a file
435@file{~/emacs/tramp/texi/dir} using for example the 490@file{~/@value{emacs-dir}/tramp/texi/dir} using the
436@command{install-info} command, and add the directory to the search 491@command{install-info} command, and add the directory to the search
437path for Info. 492path for Info.
438 493
439@item
440NOTE: 494NOTE:
495On systems using the @cite{gnu} version of @command{install-info}, the
496@command{install-info} syntax is very direct and simple. One can
497change to directory @file{~/@value{emacs-dir}/tramp/texi} and type:
498
441@example 499@example
442On systems using `gnu' @command{install-info}, the 500install-info tramp.info dir
443@command{install-info} syntax is very direct and simple. One can 501@end example
444cd to @file{~/emacs/tramp/texi} and type: 502
445 @kbd{install-info tramp.info dir}
446and a @file{dir} file will be created with the @tramp{} 503and a @file{dir} file will be created with the @tramp{}
447entry. The info reader will know how to interpret it, but must 504entry. The info reader will know how to interpret it, but must
448be told where to find it (see below). If you want anything fancier 505be told where to find it (see below). If you want anything fancier
449you'll need to look through @kbd{man install-info}. 506you'll need to look through @kbd{man install-info}.
450 507
451Debian gnu/linux doesn't default to `gnu' @command{install-info} and 508Debian gnu/linux doesn't default to @cite{gnu} @command{install-info}
452uses its own version. This version does not create a @file{dir} file 509and uses its own version. This version does not create a @file{dir}
453for you from scratch. You must provide a skeleton dir file it 510file for you from scratch. You must provide a skeleton @file{dir}
454recognizes. One can be found in a default install at 511file it recognizes. One can be found in a default installation of
455@file{/usr/info/dir}. Copy the top of this file down to the first 512@value{emacs-name} at @file{/usr/info/dir}. Copy the top of this file
456occurrence of `* Menu' including that line plus one more blank line, 513down to the first occurrence of @code{* Menu} including that line plus
457to your working directory @file{texi/dir}, or use the sample provided 514one more blank line, to your working directory
458in the @file{texi} directory of this distribution. See 515@file{~/@value{emacs-dir}/tramp/texi}, or use the sample
459@file{texi/dir_sample} 516@file{~/@value{emacs-dir}/tramp/texi/dir_sample}.
460 517
461Once a @file{dir} file is in place, this command will make the entry. 518Once a @file{dir} file is in place, this command will make the entry:
462 install-info --infodir=. tramp.info 519
463If you want it in a specific category 520@example
464 (see @kbd{man install-info} for further details) 521install-info --infodir=. tramp.info
465@end example 522@end example
466 523
524If you want it in a specific category see @kbd{man install-info} for
525further details.
526
467If the environment variable @env{INFOPATH} is set, add the directory 527If the environment variable @env{INFOPATH} is set, add the directory
468@file{~/emacs/tramp/texi/} to it. Else, add the directory to 528@file{~/@value{emacs-dir}/tramp/texi/} to it. Else, add the directory to
529@ifset emacs
469@code{Info-default-directory-list}, as follows: 530@code{Info-default-directory-list}, as follows:
531
470@lisp 532@lisp
471(add-to-list 'Info-default-directory-list "~/emacs/tramp/texi/") 533(add-to-list 'Info-default-directory-list "~/@value{emacs-dir}/tramp/texi/")
472@end lisp 534@end lisp
473XEmacs 21 users should use @code{Info-directory-list} rather than 535@end ifset
474@code{Info-default-directory-list}. 536@ifset xemacs
537@code{Info-directory-list}, as follows:
538@lisp
539(add-to-list 'Info-directory-list "~/@value{emacs-dir}/tramp/texi/")
540@end lisp
541@end ifset
475 542
476@end itemize 543@end itemize
477 544
478 545@ifset xemacs
479For XEmacs users, the package @file{fsf-compat} must be installed. 546For @value{emacs-name}, the package @file{fsf-compat} must be installed.
480For details on package installation, see @ref{Packages, , ,xemacs}. 547For details on package installation, see @ref{Packages, , ,xemacs}.
481@ifhtml 548@ifhtml
482(If the previous link doesn't work, try the XEmacs documentation at 549(If the previous link doesn't work, try the @value{emacs-name}
483@uref{http://www.xemacs.org/Documentation/packageGuide.html,the XEmacs 550documentation at
484site}.) 551@uref{http://www.xemacs.org/Documentation/packageGuide.html,the
552@value{emacs-name} site}.)
485@end ifhtml 553@end ifhtml
554@end ifset
486 555
487@node Configuration 556@node Configuration
488@chapter Configuring @tramp{} for use 557@chapter Configuring @tramp{} for use
@@ -490,7 +559,7 @@ site}.)
490 559
491@cindex default configuration 560@cindex default configuration
492@tramp{} is (normally) fully functional when it is initially 561@tramp{} is (normally) fully functional when it is initially
493installed. It is initially configured to use the @command{sh} program 562installed. It is initially configured to use the @command{ssh} program
494to connect to the remote host and to use base-64 encoding (on the 563to connect to the remote host and to use base-64 encoding (on the
495remote host, via @command{mimencode}, and on the local host via the 564remote host, via @command{mimencode}, and on the local host via the
496built-in support for base-64 encoding in Emacs). 565built-in support for base-64 encoding in Emacs).
@@ -513,6 +582,7 @@ can use to connect to remote machines and transfer files
513* Multi-hop Methods:: Connecting to a remote host using multiple hops. 582* Multi-hop Methods:: Connecting to a remote host using multiple hops.
514* Default Method:: Selecting a default method. 583* Default Method:: Selecting a default method.
515* Customizing Methods:: Using Non-Standard Methods. 584* Customizing Methods:: Using Non-Standard Methods.
585* Customizing Completion:: Selecting config files for user/host name completion.
516* Remote Programs:: How @tramp{} finds and uses programs on the remote machine. 586* Remote Programs:: How @tramp{} finds and uses programs on the remote machine.
517* Remote shell setup:: Remote shell setup hints. 587* Remote shell setup:: Remote shell setup hints.
518* Windows setup hints:: Issues with Cygwin ssh. 588* Windows setup hints:: Issues with Cygwin ssh.
@@ -541,9 +611,9 @@ differ.
541@cindex methods, external transfer 611@cindex methods, external transfer
542@cindex methods, out-of-band 612@cindex methods, out-of-band
543Loading or saving a remote file requires that the content of the file 613Loading or saving a remote file requires that the content of the file
544be transferred between the two machines. The content of the file can be 614be transfered between the two machines. The content of the file can be
545transferred over the same connection used to log in to the remote 615transfered over the same connection used to log in to the remote
546machine or the file can be transferred through another connection using 616machine or the file can be transfered through another connection using
547a remote copy program such as @command{rcp}, @command{scp} or 617a remote copy program such as @command{rcp}, @command{scp} or
548@command{rsync}. The former are called @dfn{inline methods}, the 618@command{rsync}. The former are called @dfn{inline methods}, the
549latter are called @dfn{out-of-band methods} or @dfn{external transfer 619latter are called @dfn{out-of-band methods} or @dfn{external transfer
@@ -643,7 +713,7 @@ There are also two variants, @option{sm-ssh1} and @option{sm-ssh2}
643that use the @command{ssh1} and @command{ssh2} commands explicitly. If 713that use the @command{ssh1} and @command{ssh2} commands explicitly. If
644you don't know what these are, you do not need these options. 714you don't know what these are, you do not need these options.
645 715
646All the methods based on @command{ssh} have an additional kludgey 716All the methods based on @command{ssh} have an additional kludgy
647feature: you can specify a host name which looks like @file{host#42} 717feature: you can specify a host name which looks like @file{host#42}
648(the real host name, then a hash sign, then a port number). This 718(the real host name, then a hash sign, then a port number). This
649means to connect to the given host but to also pass @code{-p 42} as 719means to connect to the given host but to also pass @code{-p 42} as
@@ -776,7 +846,7 @@ rather than @command{su} to become a different user.
776As you expect, this is similar to @option{sm}, only a little 846As you expect, this is similar to @option{sm}, only a little
777different. Whereas @option{sm} opens a normal interactive shell on 847different. Whereas @option{sm} opens a normal interactive shell on
778the remote host, this option uses @samp{ssh -t -t @var{host} -l 848the remote host, this option uses @samp{ssh -t -t @var{host} -l
779@var{user} /bin/sh} tp open a connection. This is useful for users 849@var{user} /bin/sh} to open a connection. This is useful for users
780where the normal login shell is set up to ask them a number of 850where the normal login shell is set up to ask them a number of
781questions when logging in. This procedure avoids these questions, and 851questions when logging in. This procedure avoids these questions, and
782just gives @tramp{} a more-or-less `standard' login shell to work 852just gives @tramp{} a more-or-less `standard' login shell to work
@@ -901,7 +971,7 @@ The cost of the cryptographic handshake at the start of an @command{scp}
901session can begin to absorb the advantage that the lack of encoding and 971session can begin to absorb the advantage that the lack of encoding and
902decoding presents. 972decoding presents.
903 973
904All the @command{ssh} based methods support the kludgey @samp{-p} 974All the @command{ssh} based methods support the kludgy @samp{-p}
905feature where you can specify a port number to connect to in the host 975feature where you can specify a port number to connect to in the host
906name. For example, the host name @file{host#42} tells Tramp to 976name. For example, the host name @file{host#42} tells Tramp to
907specify @samp{-p 42} in the argument list for @command{ssh}. 977specify @samp{-p 42} in the argument list for @command{ssh}.
@@ -1097,11 +1167,12 @@ also be accomplished within Tramp, by adding a multi-hop method. For
1097example: 1167example:
1098 1168
1099@lisp 1169@lisp
1100(add-to-list 'tramp-multi-connection-function-alist 1170(add-to-list
1101 '("sshf" tramp-multi-connect-rlogin "ssh %h -l %u -p 4400%n")) 1171 'tramp-multi-connection-function-alist
1172 '("sshf" tramp-multi-connect-rlogin "ssh %h -l %u -p 4400%n"))
1102@end lisp 1173@end lisp
1103 1174
1104Now you can use a @code{sshf} hop which connects to port 4400 instead of 1175Now you can use an @code{sshf} hop which connects to port 4400 instead of
1105the standard port. 1176the standard port.
1106 1177
1107 1178
@@ -1175,6 +1246,105 @@ For the time being, I'll refer you to the Lisp documentation of that
1175variable, accessible with @kbd{C-h v tramp-methods @key{RET}}. 1246variable, accessible with @kbd{C-h v tramp-methods @key{RET}}.
1176 1247
1177 1248
1249@node Customizing Completion
1250@section Selecting config files for user/host name completion
1251@cindex customizing completion
1252@cindex selecting config files
1253@vindex tramp-completion-function-alist
1254
1255The variable @code{tramp-completion-function-alist} is intended to
1256customize, which files are taken into account for user and host name
1257completion (@pxref{Filename completion}). For every method, it keeps
1258a set of configuration files, accompanied by a Lisp function able to
1259parse that file. Entries in @code{tramp-completion-function-alist}
1260have the form (@var{method} @var{pair1} @var{pair2} ...).
1261
1262Each @var{pair} is composed of (@var{function} @var{file}).
1263@var{function} is responsible to extract user names and host names
1264from @var{file} for completion. There are two functions which access
1265this variable:
1266
1267@defun tramp-get-completion-function method
1268This function returns the list of completion functions for @var{method}.
1269
1270Example:
1271@example
1272(tramp-get-completion-function "rsh")
1273
1274 @result{} ((tramp-parse-rhosts "/etc/hosts.equiv")
1275 (tramp-parse-rhosts "~/.rhosts"))
1276@end example
1277@end defun
1278
1279@defun tramp-set-completion-function method function-list
1280This function sets @var{function-list} as list of completion functions
1281for @var{method}.
1282
1283Example:
1284@example
1285(tramp-set-completion-function "ssh"
1286 '((tramp-parse-shosts "/etc/ssh_known_hosts")
1287 (tramp-parse-shosts "~/.ssh/known_hosts")))
1288
1289 @result{} ((tramp-parse-shosts "/etc/ssh_known_hosts")
1290 (tramp-parse-shosts "~/.ssh/known_hosts"))
1291@end example
1292@end defun
1293
1294The following predefined functions parsing configuration files exists:
1295
1296@table @asis
1297@item @code{tramp-parse-rhosts}
1298@findex tramp-parse-rhosts
1299
1300This function parses files which are syntactical equivalent to
1301@file{~/.rhosts}. It returns both host names and user names, if
1302specified.
1303
1304@item @code{tramp-parse-shosts}
1305@findex tramp-parse-shosts
1306
1307This function parses files which are syntactical equivalent to
1308@file{/etc/ssh_known_hosts}. Since there are no user names specified
1309in such files, it can return host names only.
1310
1311@item @code{tramp-parse-hosts}
1312@findex tramp-parse-hosts
1313
1314A function dedicated to @file{/etc/hosts} style files. It returns
1315host names only.
1316
1317@item @code{tramp-parse-passwd}
1318@findex tramp-parse-passwd
1319
1320Finally a method which parses @file{/etc/passwd} like files.
1321Obviously, it can return user names only.
1322@end table
1323
1324@ifset emacs
1325A function which parses @file{~/.netrc"} file syntax doesn't exist in
1326@tramp{}, because this task is delegated to
1327@value{ftp-package-name}. Its customization should be used instead.
1328@end ifset
1329
1330If you want to keep your own data in a file, with your own structure,
1331you might provide such a function as well. This function must meet
1332the following conventions:
1333
1334@defun my-tramp-parse file
1335@var{file} must be either a file name on your host, or @code{nil}. The
1336function must return a list of (@var{user} @var{host}), which are
1337taken as candidates for user and host name completion.
1338
1339Example:
1340@example
1341(my-tramp-parse "~/.my-tramp-hosts")
1342
1343 @result{} ((nil "toto") ("daniel" "melancholia"))
1344@end example
1345@end defun
1346
1347
1178@node Remote Programs 1348@node Remote Programs
1179@section How @tramp{} finds and uses programs on the remote machine. 1349@section How @tramp{} finds and uses programs on the remote machine.
1180 1350
@@ -1209,13 +1379,13 @@ found.
1209To add a directory to the remote search path, you could use code such 1379To add a directory to the remote search path, you could use code such
1210as: 1380as:
1211 1381
1212@example 1382@lisp
1213(require 'tramp) @i{; @tramp{} must be loaded before this} 1383@i{;; We load @tramp{} to define the variable.}
1214 @i{; happens.} 1384(require 'tramp)
1215 1385@i{;; We have @command{perl} in "/usr/local/perl/bin"}
1216@i{; We have @command{perl} in "/usr/local/perl/bin"}
1217(add-to-list 'tramp-remote-path "/usr/local/perl/bin") 1386(add-to-list 'tramp-remote-path "/usr/local/perl/bin")
1218@end example 1387@end lisp
1388
1219 1389
1220@node Remote shell setup 1390@node Remote shell setup
1221@comment node-name, next, previous, up 1391@comment node-name, next, previous, up
@@ -1228,7 +1398,7 @@ as:
1228As explained in the @ref{Overview} section, @tramp{} connects to the 1398As explained in the @ref{Overview} section, @tramp{} connects to the
1229remote host and talks to the shell it finds there. Of course, when you 1399remote host and talks to the shell it finds there. Of course, when you
1230log in, the shell executes its init files. Suppose your init file 1400log in, the shell executes its init files. Suppose your init file
1231requires you to enter the birthdate of your mother; clearly @tramp{} 1401requires you to enter the birth date of your mother; clearly @tramp{}
1232does not know this and hence fails to log you in to that host. 1402does not know this and hence fails to log you in to that host.
1233 1403
1234There are different possible strategies for pursuing this problem. One 1404There are different possible strategies for pursuing this problem. One
@@ -1270,25 +1440,39 @@ suppose your shell prompt is @code{a <b> c $ }. In this case, Tramp
1270recognizes the @code{>} character as the end of the prompt, but it is 1440recognizes the @code{>} character as the end of the prompt, but it is
1271not at the end of the buffer. 1441not at the end of the buffer.
1272 1442
1443@item @var{tramp-shell-prompt-pattern}
1444@vindex tramp-shell-prompt-pattern
1445
1446This regular expression is used by @tramp{} in the same way as
1447@code{shell-prompt-pattern}, to match prompts from the remote shell.
1448This second variable exists because the prompt from the remote shell
1449might be different from the prompt from a local shell --- after all,
1450the whole point of @tramp{} is to log in to remote hosts as a
1451different user. The default value of
1452@code{tramp-shell-prompt-pattern} is the same as the default value of
1453@code{shell-prompt-pattern}, which is reported to work well in many
1454circumstances.
1455
1273@item @code{tset} and other questions 1456@item @code{tset} and other questions
1274@cindex Unix command tset 1457@cindex Unix command tset
1275@cindex tset Unix command 1458@cindex tset Unix command
1276 1459
1277Some people invoke the @code{tset} program from their shell startup 1460Some people invoke the @code{tset} program from their shell startup
1278scripts which asks the user about the terminal type of the shell. Maybe 1461scripts which asks the user about the terminal type of the shell.
1279some shells ask other questions when they are started. @tramp{} does 1462Maybe some shells ask other questions when they are started. @tramp{}
1280not know how to answer these questions. (A facility for enabling 1463does not know how to answer these questions. There are two approaches
1281@tramp{} to answer these questions is planned for some future version, 1464for dealing with this problem. One approach is to take care that the
1282but don't hold your breath.) 1465shell does not ask any questions when invoked from @tramp{}. You can
1283 1466do this by checking the @code{TERM} environment variable, it will be
1284Therefore, you should take care that the shell does not ask any 1467set to @code{dumb} when connecting.
1285questions when invoked from @tramp{}. You can do this by checking the
1286@code{TERM} environment variable, it will be set to @code{dumb} when
1287connecting.
1288 1468
1289@vindex tramp-terminal-type 1469@vindex tramp-terminal-type
1290The variable @code{tramp-terminal-type} can be used to change this value 1470The variable @code{tramp-terminal-type} can be used to change this value
1291@code{dumb}. 1471to @code{dumb}.
1472
1473The other approach is to teach @tramp{} about these questions. See
1474the variables @code{tramp-actions-before-shell} and
1475@code{tramp-multi-actions} (for multi-hop connections).
1292 1476
1293@end table 1477@end table
1294 1478
@@ -1317,13 +1501,24 @@ to as though they were local.
1317 1501
1318Files are specified to @tramp{} using a formalized syntax specifying the 1502Files are specified to @tramp{} using a formalized syntax specifying the
1319details of the system to connect to. This is similar to the syntax used 1503details of the system to connect to. This is similar to the syntax used
1320by the @command{EFS} and @command{Ange-FTP} packages. 1504by the @value{ftp-package-name} package.
1321 1505
1506@cindex type-ahead
1507Something that might happen which surprises you is that Emacs
1508remembers all your keystrokes, so if you see a password prompt from
1509Emacs, say, and hit @kbd{@key{RET}} twice instead of once, then the
1510second keystroke will be processed by Emacs after @tramp{} has done
1511its thing. Why, this type-ahead is normal behavior, you say. Right
1512you are, but be aware that opening a remote file might take quite a
1513while, maybe half a minute when a connection needs to be opened.
1514Maybe after half a minute you have already forgotten that you hit that
1515key!
1322 1516
1323@menu 1517@menu
1324* Filename Syntax:: @tramp{} filename conventions. 1518* Filename Syntax:: @tramp{} filename conventions.
1325* Multi-hop filename syntax:: Multi-hop filename conventions 1519* Multi-hop filename syntax:: Multi-hop filename conventions.
1326* Dired:: Dired and filename completion. 1520* Filename completion:: Filename completion.
1521* Dired:: Dired.
1327@end menu 1522@end menu
1328 1523
1329 1524
@@ -1332,79 +1527,70 @@ by the @command{EFS} and @command{Ange-FTP} packages.
1332@cindex filename syntax 1527@cindex filename syntax
1333@cindex filename examples 1528@cindex filename examples
1334 1529
1335On Emacs, the Ange-FTP and Tramp filenames use a unified syntax. On 1530To access the file @var{path} on the remote machine @var{machine} you
1336XEmacs, EFS and Tramp use different formats for the filenames. 1531would specify the filename
1337Therefore, the following will describe the Emacs and XEmacs cases 1532@file{@value{tramp-prefix}@var{machine}@value{tramp-postfix}@var{path}}.
1338separately. 1533This will connect to @var{machine} and transfer the file using the
1534default method. @xref{Default Method}.
1339 1535
1340On Emacs, to access the file @var{path} on the remote machine 1536Some examples of @tramp{} filenames are shown below.
1341@var{machine} you would specify the filename
1342@file{/@var{machine}:@var{path}}. This will connect to @var{machine}
1343and transfer the file using the default method. @xref{Default
1344Method}. On XEmacs, use @file{/[@var{machine}]@var{path}}. (The
1345square brackets are part of the file name.)
1346
1347Some examples of @tramp{} filenames are shown below. In each case,
1348the Emacs-style filename is shown first, then the XEmacs-style
1349filename.
1350 1537
1351@table @file 1538@table @file
1352@item /melancholia:.emacs 1539@item @value{tramp-prefix}melancholia@value{tramp-postfix}.emacs
1353@itemx /[melancholia].emacs
1354Edit the file @file{.emacs} in your home directory on the machine 1540Edit the file @file{.emacs} in your home directory on the machine
1355@code{melancholia}. 1541@code{melancholia}.
1356 1542
1357@item /melancholia.danann.net:.emacs 1543@item @value{tramp-prefix}melancholia.danann.net@value{tramp-postfix}.emacs
1358@itemx /[melancholia.danann.net].emacs
1359This edits the same file, using the fully qualified domain name of 1544This edits the same file, using the fully qualified domain name of
1360the machine. 1545the machine.
1361 1546
1362@item /melancholia:~/.emacs 1547@item @value{tramp-prefix}melancholia@value{tramp-postfix}~/.emacs
1363@itemx /[melancholia]~/.emacs
1364This also edits the same file --- the @file{~} is expanded to your 1548This also edits the same file --- the @file{~} is expanded to your
1365home directory on the remote machine, just like it is locally. 1549home directory on the remote machine, just like it is locally.
1366 1550
1367@item /melancholia:~daniel/.emacs 1551@item @value{tramp-prefix}melancholia@value{tramp-postfix}~daniel/.emacs
1368@itemx /[melancholia]~daniel/.emacs
1369This edits the file @file{.emacs} in the home directory of the user 1552This edits the file @file{.emacs} in the home directory of the user
1370@code{daniel} on the machine @code{melancholia}. The @file{~<user>} 1553@code{daniel} on the machine @code{melancholia}. The @file{~<user>}
1371construct is expanded to the home directory of that user on the remote 1554construct is expanded to the home directory of that user on the remote
1372machine. 1555machine.
1373 1556
1374@item /melancholia:/etc/squid.conf 1557@item @value{tramp-prefix}melancholia@value{tramp-postfix}/etc/squid.conf
1375@itemx /[melancholia]/etc/squid.conf
1376This edits the file @file{/etc/squid.conf} on the machine 1558This edits the file @file{/etc/squid.conf} on the machine
1377@code{melancholia}. 1559@code{melancholia}.
1378 1560
1379@end table 1561@end table
1380 1562
1381Unless you specify a different name to use, @tramp{} will use the current 1563Unless you specify a different name to use, @tramp{} will use the
1382local user name as the remote user name to log in with. If you need to 1564current local user name as the remote user name to log in with. If you
1383log in as a different user, you can specify the user name as part of the 1565need to log in as a different user, you can specify the user name as
1384filename. 1566part of the filename.
1385 1567
1386On Emacs, to log in to the remote machine as a specific user, you use 1568To log in to the remote machine as a specific user, you use the syntax
1387the syntax @file{/@var{user}@@@var{machine}:/path/to.file}. On 1569@file{@value{tramp-prefix}@var{user}@@@var{machine}@value{tramp-postfix}/@var{path/to.file}}.
1388XEmacs, use @file{/[@var{user}@@@var{machine}]/path/to.file}. That 1570That means that connecting to @code{melancholia} as @code{daniel} and
1389means that connecting to @code{melancholia} as @code{daniel} and
1390editing @file{.emacs} in your home directory you would specify 1571editing @file{.emacs} in your home directory you would specify
1391@file{/daniel@@melancholia:.emacs} on Emacs and 1572@file{@value{tramp-prefix}daniel@@melancholia@value{tramp-postfix}.emacs}.
1392@file{/[daniel@@melancholia].emacs} on XEmacs.
1393
1394 1573
1395It is also possible to specify other file transfer methods 1574It is also possible to specify other file transfer methods
1396(@pxref{Default Method}) as part of the filename. On Emacs, this is 1575(@pxref{Default Method}) as part of the filename.
1397done by puttig the method before the user and host name, as in 1576@ifset emacs
1398@file{/@var{method}:} (note the trailing colon). On XEmacs, it is 1577This is done by putting the method before the user and host name, as
1399done by replacing the initial @file{/[} with @file{/[<method>/}. 1578in
1400(Note the trailing slash!) The user, machine and file specification 1579@file{@value{tramp-prefix}@var{method}@value{tramp-postfix-single-hop}}
1401remain the same. 1580(note the trailing colon).
1581@end ifset
1582@ifset xemacs
1583This is done by replacing the initial
1584@file{@value{tramp-prefix}} with
1585@file{@value{tramp-prefix}<method>@value{tramp-postfix-single-hop}}.
1586(Note the trailing slash!).
1587@end ifset
1588The user, machine and file specification remain the same.
1402 1589
1403So, to connect to the machine @code{melancholia} as @code{daniel}, 1590So, to connect to the machine @code{melancholia} as @code{daniel},
1404using the @option{su} method to transfer files, and edit @file{.emacs} 1591using the @option{su} method to transfer files, and edit @file{.emacs}
1405in my home directory I would specify the filename 1592in my home directory I would specify the filename
1406@file{/su:daniel@@melancholia:.emacs} on Emacs and 1593@file{@value{tramp-prefix}su@value{tramp-postfix-single-hop}daniel@@melancholia@value{tramp-postfix}.emacs}.
1407@file{/[su/daniel@@melancholia].emacs} on XEmacs.
1408 1594
1409 1595
1410@node Multi-hop filename syntax 1596@node Multi-hop filename syntax
@@ -1413,64 +1599,116 @@ in my home directory I would specify the filename
1413@cindex multi-hop filename syntax 1599@cindex multi-hop filename syntax
1414 1600
1415The syntax of multi-hop file names is necessarily slightly different 1601The syntax of multi-hop file names is necessarily slightly different
1416than the syntax of other @tramp{} file names. Here's an example multi-hop 1602than the syntax of other @tramp{} file names. Here's an example
1417file name, first in Emacs syntax and then in XEmacs syntax: 1603multi-hop file name, first in Emacs syntax and then in XEmacs syntax:
1418 1604
1419@file{/multi:rsh:out@@gate:telnet:kai@@real.host:/path/to.file} 1605@example
1420@file{/[multi/rsh:out@@gate/telnet:kai@@real.host]/path/to.file} 1606@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
1607@end example
1421 1608
1422This is quite a mouthful. So let's go through it step by step. The 1609This is quite a mouthful. So let's go through it step by step. The
1423file name consists of three parts. On Emacs, the parts are separated 1610file name consists of three parts.
1424by colons, on XEmacs they are separated by slashes and square 1611@ifset emacs
1425brackets. The first part is @file{/multi:} (or @file{/[multi}), the 1612The parts are separated by colons
1426method specification. The second part is 1613@end ifset
1427@file{rsh:out@@gate:telnet:kai@@real.host} (or 1614@ifset xemacs
1428@file{rsh:out@@gate/telnet:kai@@real.host}) and specifies the hops. 1615The parts are separated by slashes and square brackets.
1429(Yes, on Emacs the second part may contain even more colons, so that's why 1616@end ifset
1430this file name has more than two colons in it.) The final part is 1617The first part is @file{@value{tramp-prefix}multi}, the method
1431@file{/path/to.file} and specifies the file name on the remote host. 1618specification. The second part is
1619@file{rsh@value{tramp-postfix-multi-hop}out@@gate@value{tramp-postfix-single-hop}telnet@value{tramp-postfix-multi-hop}kai@@real.host}
1620and specifies the hops. The final part is @file{/path/to.file} and
1621specifies the file name on the remote host.
1432 1622
1433The first part and the final part should be clear. @ref{Multi-hop 1623The first part and the final part should be clear. @ref{Multi-hop
1434Methods}, for a list of alternatives for the method specification. 1624Methods}, for a list of alternatives for the method specification.
1435 1625
1436The second part can be subdivided again into components, so-called hops. 1626The second part can be subdivided again into components, so-called
1437In the above file name, there are two hops, @file{rsh:out@@gate} and 1627hops. In the above file name, there are two hops,
1438@file{telnet:kai@@real.host}. 1628@file{rsh@value{tramp-postfix-multi-hop}out@@gate} and
1629@file{telnet@value{tramp-postfix-multi-hop}kai@@real.host}.
1439 1630
1440Each hop can @emph{again} be subdivided into (three) components, the 1631Each hop can @emph{again} be subdivided into (three) components, the
1441@dfn{hop method}, the @dfn{user name} and the @dfn{host name}. The 1632@dfn{hop method}, the @dfn{user name} and the @dfn{host name}. The
1442meaning of the second and third component should be clear, and the hop 1633meaning of the second and third component should be clear, and the hop
1443method says what program to use to perform that hop. 1634method says what program to use to perform that hop.
1444 1635
1445The first hop, @file{rsh:out@@gate}, says to use @command{rsh} to log in 1636The first hop, @file{rsh@value{tramp-postfix-multi-hop}out@@gate},
1446as user @code{out} to the host @code{gate}. Starting at that host, the 1637says to use @command{rsh} to log in as user @code{out} to the host
1447second hop, @file{telnet:kai@@real.host}, says to use @command{telnet} 1638@code{gate}. Starting at that host, the second hop,
1448to log in as user @code{kai} to host @code{real.host}. 1639@file{telnet@value{tramp-postfix-multi-hop}kai@@real.host}, says to
1640use @command{telnet} to log in as user @code{kai} to host
1641@code{real.host}.
1642
1643@xref{Multi-hop Methods}, for a list of possible hop method values.
1644The variable @code{tramp-multi-connection-function-alist} contains the
1645list of possible hop methods and information on how to execute them,
1646should you want to add your own.
1449 1647
1450@xref{Multi-hop Methods}, for a list of possible hop method values. The 1648
1451variable @var{tramp-multi-connection-function-alist} contains the list of 1649@node Filename completion
1452possible hop methods and information on how to execute them, should you 1650@section Filename completion
1453want to add your own. 1651@cindex filename completion
1652
1653Filename completion works with @tramp{} for both completing methods,
1654user names and machine names (except multi hop methods) as well as for
1655files on remote machines.
1656
1657If you, for example, type @kbd{C-x C-f @value{tramp-prefix}t
1658@key{TAB}}, @tramp{} might give you as result the choice for
1659
1660@example
1661@ifset emacs
1662@value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop} tmp/
1663@value{tramp-prefix-single-hop}toto@value{tramp-postfix}
1664@end ifset
1665@ifset xemacs
1666@value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop} @value{tramp-prefix-single-hop}toto@value{tramp-postfix}
1667@end ifset
1668@end example
1669
1670@samp{@value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}}
1671is a possible completion for the respective method,
1672@ifset emacs
1673@samp{tmp/} stands for the directory @file{/tmp} on your local
1674machine,
1675@end ifset
1676and @samp{@value{tramp-prefix-single-hop}toto@value{tramp-postfix}}
1677might be a host @tramp has detected in your @file{~/.ssh/known_hosts}
1678file (given you're using default method @option{ssh}).
1679
1680If you go on to type @kbd{e @key{TAB}}, the minibuffer is completed to
1681@samp{@value{tramp-prefix}telnet@value{tramp-postfix-single-hop}}.
1682Next @kbd{@key{TAB}} brings you all machine names @tramp{} detects in
1683your @file{/etc/hosts} file, let's say
1684
1685@example
1686@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}
1687@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}
1688@value{tramp-prefix-single-hop}telnet@value{tramp-postfix-single-hop}melancholia@value{tramp-postfix}
1689@end example
1690
1691Now you can choose the desired machine, and you can continue to
1692complete file names on that machine.
1693
1694As filename completion needs to fetch the listing of files from the
1695remote machine, this feature is sometimes fairly slow. As @tramp{}
1696does not yet cache the results of directory listing, there is no gain
1697in performance the second time you complete filenames.
1698
1699If the configuration files (@pxref{Customizing Completion}), which
1700@tramp{} uses for analysis of completion, offer user names, those user
1701names will be taken into account as well.
1454 1702
1455 1703
1456@node Dired 1704@node Dired
1457@section Dired and filename completion 1705@section Dired
1458@cindex dired 1706@cindex dired
1459@cindex filename completion
1460 1707
1461@tramp{} works transparently with dired, enabling you to use this powerful 1708@tramp{} works transparently with dired, enabling you to use this powerful
1462file management tool to manage files on any machine you have access to 1709file management tool to manage files on any machine you have access to
1463over the Internet. 1710over the Internet.
1464 1711
1465Filename completion also works with @tramp{} for files on remote machines
1466although there is no completion for user names or machine names at this
1467stage.
1468
1469As filename completion needs to fetch the listing of files from the
1470remote machine, this feature is sometimes fairly slow. As @tramp{} does not
1471yet cache the results of directory listing, there is no gain in
1472performance the second time you complete filenames.
1473
1474If you need to browse a directory tree, Dired is a better choice, at 1712If you need to browse a directory tree, Dired is a better choice, at
1475present, than filename completion. Dired has its own cache mechanism 1713present, than filename completion. Dired has its own cache mechanism
1476and will only fetch the directory listing once. 1714and will only fetch the directory listing once.
@@ -1516,11 +1754,16 @@ development team to analyze and correct the problem.
1516@item 1754@item
1517Where can I get the latest @tramp{}? 1755Where can I get the latest @tramp{}?
1518 1756
1519@tramp{} is available at 1757@tramp{} is available under the URL below.
1520@uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/tramp.tar.gz}.
1521There is also a Savannah project page, at
1522@uref{https://savannah.gnu.org/projects/tramp/}.
1523 1758
1759@noindent
1760@uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/tramp.tar.gz}
1761
1762@noindent
1763There is also a Savannah project page.
1764
1765@noindent
1766@uref{https://savannah.gnu.org/projects/tramp/}
1524 1767
1525@item 1768@item
1526Which systems does it work on? 1769Which systems does it work on?
@@ -1555,10 +1798,10 @@ first thing to do is to make sure that you have the latest version of
1555@tramp{} installed. 1798@tramp{} installed.
1556 1799
1557If you do, please try and find out exactly the conditions required for 1800If you do, please try and find out exactly the conditions required for
1558the @code{EFS} handlers to fire. If you can, putting a breakpoint on 1801the EFS handlers to fire. If you can, putting a breakpoint on
1559@code{efs-ftp-path} and sending in the stack trace along with your bug 1802@code{efs-ftp-path} and sending in the stack trace along with your bug
1560report would make it easier for the developers to work out what is going 1803report would make it easier for the developers to work out what is
1561wrong. 1804going wrong.
1562 1805
1563 1806
1564@item 1807@item
@@ -1657,9 +1900,9 @@ fi
1657@node Version Control 1900@node Version Control
1658@chapter The inner workings of remote version control 1901@chapter The inner workings of remote version control
1659 1902
1660Unlike EFS and Ange-FTP, @tramp{} has full shell access to the remote 1903Unlike @value{ftp-package-name}, @tramp{} has full shell access to the
1661machine. This makes it possible to provide version control for files 1904remote machine. This makes it possible to provide version control for
1662accessed under @tramp{}. 1905files accessed under @tramp{}.
1663 1906
1664The actual version control binaries must be installed on the remote 1907The actual version control binaries must be installed on the remote
1665machine, accessible in the directories specified in 1908machine, accessible in the directories specified in
@@ -1674,7 +1917,7 @@ Work is ongoing to improve the transparency of the system.
1674* Remote Commands:: Executing the version control commands on the remote machine. 1917* Remote Commands:: Executing the version control commands on the remote machine.
1675* Changed workfiles:: Detecting if the working file has changed. 1918* Changed workfiles:: Detecting if the working file has changed.
1676* Checking out files:: Bringing the workfile out of the repository. 1919* Checking out files:: Bringing the workfile out of the repository.
1677* Miscellaneous Version Control:: Things related to Version Control that don't fit elsewhere 1920* Miscellaneous Version Control:: Things related to Version Control that don't fit elsewhere.
1678@end menu 1921@end menu
1679 1922
1680 1923
@@ -1880,3 +2123,7 @@ would have to be installed from the start, too.
1880@c * Make terminology "inline" vs "out-of-band" consistent. 2123@c * Make terminology "inline" vs "out-of-band" consistent.
1881@c It seems that "external" is also used instead of "out-of-band". 2124@c It seems that "external" is also used instead of "out-of-band".
1882 2125
2126@c * M. Albinus
2127@c ** Use `filename' resp. `file name' consistently.
2128@c ** Use `host' resp. `machine' consistently.
2129@c ** Consistent small or capitalized words especially in menues.