diff options
| author | Kai Großjohann | 2002-09-22 13:23:36 +0000 |
|---|---|---|
| committer | Kai Großjohann | 2002-09-22 13:23:36 +0000 |
| commit | 16674e4f3b1e05ebece0b676fffe6119d9b2edd4 (patch) | |
| tree | 6c207369992886f486d373b2f1d047cd83959174 /man | |
| parent | 1fc85daee037058b772d7fa2726bc939fae4720c (diff) | |
| download | emacs-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.texi | 733 |
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{} | ||
| 15 | 2.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'. |
| 26 | This file documents @tramp{}, a remote file editing package for Emacs and | 32 | @set emacs |
| 27 | XEmacs. | 33 | |
| 28 | 34 | @c Some flags which make the text independent on the (X)Emacs flavor. | |
| 29 | Copyright @copyright{} 1999, 2000, 2001, 2002 Free Software | 35 | @c GNU Emacs values. |
| 30 | Foundation, Inc. | 36 | @ifset emacs |
| 31 | 37 | @set emacs-name Emacs | |
| 32 | @quotation | 38 | @set emacs-dir emacs |
| 33 | Permission is granted to copy, distribute and/or modify this document | 39 | @set ftp-package-name Ange-FTP |
| 34 | under the terms of the GNU Free Documentation License, Version 1.1 or | 40 | @set tramp-prefix / |
| 35 | any later version published by the Free Software Foundation; with no | 41 | @set tramp-prefix-single-hop |
| 36 | Invariant Sections, with the Front-Cover texts being ``A GNU | 42 | @set tramp-postfix : |
| 37 | Manual'', and with the Back-Cover Texts as in (a) below. A copy of the | 43 | @set tramp-postfix-single-hop : |
| 38 | license is included in the section entitled ``GNU Free Documentation | 44 | @set tramp-postfix-multi-hop : |
| 39 | License'' 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. |
| 42 | this GNU Manual, like GNU software. Copies published by the Free | 48 | @ifset xemacs |
| 43 | Software Foundation raise funds for GNU development.'' | 49 | @set emacs-name XEmacs |
| 44 | 50 | @set emacs-dir xemacs | |
| 45 | This document is part of a collection distributed under the GNU Free | 51 | @set ftp-package-name EFS |
| 46 | Documentation License. If you want to distribute this document | 52 | @set tramp-prefix /[ |
| 47 | separately from the collection, you can do so by adding a copy of the | 53 | @set tramp-prefix-single-hop [ |
| 48 | license 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 | |||
| 84 | This file documents @tramp{} version @trampver{}, a remote file | ||
| 85 | editing 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 |
| 72 | Protocol'. This package provides remote file editing, similar to | 88 | Protocol'. This package provides remote file editing, similar to |
| 73 | @cite{Ange-FTP} and @cite{EFS}. | 89 | @value{ftp-package-name}. |
| 74 | 90 | ||
| 75 | The difference is that Ange-FTP uses FTP to transfer files between the | 91 | The difference is that @value{ftp-package-name} uses FTP to transfer |
| 76 | local and the remote host, whereas @tramp{} uses a combination of | 92 | files between the local and the remote host, whereas @tramp{} uses a |
| 77 | @command{rsh} and @command{rcp} or other work-alike programs, such as | 93 | combination of @command{rsh} and @command{rcp} or other work-alike |
| 78 | @command{ssh}/@command{scp}. | 94 | programs, such as @command{ssh}/@command{scp}. |
| 79 | 95 | ||
| 80 | You can find the latest version of this document on the web at | 96 | You 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 | ||
| 106 | For the end user: | 123 | For 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 | ||
| 115 | For the developer: | 132 | For 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 | ||
| 134 | Using @tramp | 153 | Using @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 | ||
| 140 | The inner workings of remote version control | 160 | The 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 | ||
| 148 | Things related to Version Control that don't fit elsewhere | 168 | Things 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 | ||
| 165 | After the installation of @tramp{} into your Emacs, you will be able | 184 | After the installation of @tramp{} into your @value{emacs-name}, you |
| 166 | to access files on remote machines as though they were local. Access | 185 | will be able to access files on remote machines as though they were |
| 167 | to the remote file system for editing files, version control, and | 186 | local. Access to the remote file system for editing files, version |
| 168 | @command{dired} are transparently enabled. | 187 | control, and @command{dired} are transparently enabled. |
| 169 | 188 | ||
| 170 | Your access to the remote machine can be with the @command{rsh}, | 189 | Your 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 |
| 230 | invokes @samp{telnet @var{host}} or @samp{rsh @var{host} -l | 249 | invokes @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. |
| 232 | Communication with this process happens through an Emacs buffer, that | 251 | Communication with this process happens through an |
| 233 | is, the output from the remote end goes into a buffer. | 252 | @value{emacs-name} buffer, that is, the output from the remote end |
| 253 | goes into a buffer. | ||
| 234 | 254 | ||
| 235 | @item | 255 | @item |
| 236 | The remote host may prompt for a login name (for @command{telnet}). The | 256 | The 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, | |||
| 254 | say), then it issues an error message saying that it couldn't find the | 274 | say), then it issues an error message saying that it couldn't find the |
| 255 | remote shell prompt and shows you what the remote host has sent. | 275 | remote shell prompt and shows you what the remote host has sent. |
| 256 | 276 | ||
| 257 | If @tramp{} sees a `login failed' message, it tells you so, aborts the | 277 | If @tramp{} sees a @samp{login failed} message, it tells you so, |
| 258 | login attempt and allows you to try again. | 278 | aborts the login attempt and allows you to try again. |
| 259 | 279 | ||
| 260 | @item | 280 | @item |
| 261 | Suppose that the login was successful and @tramp{} sees the shell prompt | 281 | Suppose 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 | |||
| 293 | buffer that's used for communication, then decodes that output to | 313 | buffer that's used for communication, then decodes that output to |
| 294 | produce the file contents. | 314 | produce the file contents. |
| 295 | 315 | ||
| 296 | For out-of-band transfers, @tramp{} issues a command like @samp{rcp | 316 | For out-of-band transfers, @tramp{} issues a command like the following: |
| 297 | user@@host:/path/to/remote/file /tmp/tramp.4711} and then reads the local | 317 | @example |
| 298 | temporary file @file{/tmp/tramp.4711} into a buffer and deletes the | 318 | rcp user@@host:/path/to/remote/file /tmp/tramp.4711 |
| 299 | temporary file. | 319 | @end example |
| 320 | It then reads the local temporary file @file{/tmp/tramp.4711} into a | ||
| 321 | buffer and deletes the temporary file. | ||
| 300 | 322 | ||
| 301 | @item | 323 | @item |
| 302 | You now edit the buffer contents, blithely unaware of what has happened | 324 | You 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 | |||
| 314 | behind the scenes when you open a file with @tramp{}. | 336 | behind 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 | ||
| 345 | Copyright @copyright{} 1999, 2000, 2001, 2002 Free Software | ||
| 346 | Foundation, Inc. | ||
| 347 | |||
| 348 | @quotation | ||
| 349 | Permission is granted to copy, distribute and/or modify this document | ||
| 350 | under the terms of the GNU Free Documentation License, Version 1.1 or | ||
| 351 | any later version published by the Free Software Foundation; with no | ||
| 352 | Invariant Sections, with the Front-Cover texts being ``A GNU | ||
| 353 | Manual'', and with the Back-Cover Texts as in (a) below. A copy of the | ||
| 354 | license is included in the section entitled ``GNU Free Documentation | ||
| 355 | License'' in the Emacs manual. | ||
| 356 | |||
| 357 | (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify | ||
| 358 | this GNU Manual, like GNU software. Copies published by the Free | ||
| 359 | Software Foundation raise funds for GNU development.'' | ||
| 360 | |||
| 361 | This document is part of a collection distributed under the GNU Free | ||
| 362 | Documentation License. If you want to distribute this document | ||
| 363 | separately from the collection, you can do so by adding a copy of the | ||
| 364 | license 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 | |||
| 333 | new issues. Use these versions at your own risk. | 385 | new issues. Use these versions at your own risk. |
| 334 | 386 | ||
| 335 | Instructions for obtaining the latest development version of @tramp{} | 387 | Instructions for obtaining the latest development version of @tramp{} |
| 336 | from CVS can be found by going to the Savannah project page at | 388 | from 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 | 389 | following URL and then clicking on the CVS link in the navigation bar at |
| 338 | CVS link in the navigation bar at the top. Or follow the example | 390 | the top. |
| 339 | session below: | 391 | |
| 392 | @noindent | ||
| 393 | @uref{http://savannah.gnu.org/projects/tramp/} | ||
| 394 | |||
| 395 | @noindent | ||
| 396 | Or 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 | ||
| 352 | You should now have a directory @file{~/lisp/tramp} containing the latest | 409 | @noindent |
| 410 | You should now have a directory @file{~/@value{emacs-dir}/tramp} containing the latest | ||
| 353 | version of @tramp{}. You can fetch the latest updates from the repository | 411 | version of @tramp{}. You can fetch the latest updates from the repository |
| 354 | by issuing the command: | 412 | by 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 | ||
| 384 | If you use the version that comes with your Emacs or the XEmacs | 442 | If you use the version that comes with your @value{emacs-name}, the |
| 385 | package, the following information is not necessary. Installing | 443 | following 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 |
| 387 | least compared to rebuilding your machine from scratch. ;) | 445 | to rebuilding your machine from scratch. ;) |
| 388 | 446 | ||
| 389 | Seriously though, the installation should be a fairly simple matter. | 447 | Seriously though, the installation should be a fairly simple matter. |
| 390 | 448 | ||
| 391 | The easiest way to proceed is as follows: | 449 | The easiest way to proceed is as follows: |
| 392 | 450 | ||
| 393 | @itemize | 451 | @itemize @bullet |
| 394 | @item | 452 | @item |
| 395 | Choose a directory, say @file{~/emacs/}. Change into that directory and | 453 | Choose a directory, say @file{~/@value{emacs-dir}/}. Change into that directory and |
| 396 | unpack the tarball. This will give you a directory | 454 | unpack 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 |
| 398 | Lisp code and @file{texi} for the documentation. | 456 | Lisp code and @file{texi} for the documentation. |
| 399 | 457 | ||
| 400 | @item | 458 | @item |
| 401 | Optionally byte-compile all files in the Lisp directory, | 459 | Optionally 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 |
| 403 | the top level directory @file{~/emacs/tramp/}: | 461 | the top level directory @file{~/@value{emacs-dir}/tramp/}: |
| 462 | |||
| 404 | @example | 463 | @example |
| 405 | make EMACS=emacs all # for Emacs users | 464 | make EMACS=@value{emacs-dir} all |
| 406 | make EMACS=xemacs all # for XEmacs users | ||
| 407 | @end example | 465 | @end example |
| 408 | 466 | ||
| 409 | @item | 467 | @item |
| 410 | NOTE: | 468 | NOTE: If you run into problems running the example @command{make} |
| 411 | @example | 469 | command, don't dispare. You can still byte compile the @file{*.el} |
| 412 | If you run into problems running the example @command{make} | 470 | files by opening @value{emacs-name} in @command{dired} (@command{C-x |
| 413 | commands, don't dispare. You can still byte compile the | 471 | d}) 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 | |
| 416 | files with @kbd{m}, then press @kbd{B} to byte compile | 474 | Something similar can be done to create the info manual. Just change |
| 417 | your selections. | 475 | to 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 | |
| 419 | Something similar can be done to create the info manual. | 477 | makeinfo-buffer @key{RET}} to generate @file{tramp.info}. |
| 420 | Just cd to @file{~/emacs/tramp/texi} and load the @file{tramp.texi} | ||
| 421 | file in emacs. Then press @kbd{M-x makeinfo-buffer <RET>} | ||
| 422 | to generate @file{tramp.info}. | ||
| 423 | @end example | ||
| 424 | 478 | ||
| 425 | @item | 479 | @item |
| 426 | Tell Emacs about the new Lisp directory and the @tramp{} package | 480 | Tell @value{emacs-name} about the new Lisp directory and the |
| 427 | with 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 |
| 434 | To be able to read the Info documentation, create a file | 489 | To 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 |
| 437 | path for Info. | 492 | path for Info. |
| 438 | 493 | ||
| 439 | @item | ||
| 440 | NOTE: | 494 | NOTE: |
| 495 | On systems using the @cite{gnu} version of @command{install-info}, the | ||
| 496 | @command{install-info} syntax is very direct and simple. One can | ||
| 497 | change to directory @file{~/@value{emacs-dir}/tramp/texi} and type: | ||
| 498 | |||
| 441 | @example | 499 | @example |
| 442 | On systems using `gnu' @command{install-info}, the | 500 | install-info tramp.info dir |
| 443 | @command{install-info} syntax is very direct and simple. One can | 501 | @end example |
| 444 | cd to @file{~/emacs/tramp/texi} and type: | 502 | |
| 445 | @kbd{install-info tramp.info dir} | ||
| 446 | and a @file{dir} file will be created with the @tramp{} | 503 | and a @file{dir} file will be created with the @tramp{} |
| 447 | entry. The info reader will know how to interpret it, but must | 504 | entry. The info reader will know how to interpret it, but must |
| 448 | be told where to find it (see below). If you want anything fancier | 505 | be told where to find it (see below). If you want anything fancier |
| 449 | you'll need to look through @kbd{man install-info}. | 506 | you'll need to look through @kbd{man install-info}. |
| 450 | 507 | ||
| 451 | Debian gnu/linux doesn't default to `gnu' @command{install-info} and | 508 | Debian gnu/linux doesn't default to @cite{gnu} @command{install-info} |
| 452 | uses its own version. This version does not create a @file{dir} file | 509 | and uses its own version. This version does not create a @file{dir} |
| 453 | for you from scratch. You must provide a skeleton dir file it | 510 | file for you from scratch. You must provide a skeleton @file{dir} |
| 454 | recognizes. One can be found in a default install at | 511 | file 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 |
| 456 | occurrence of `* Menu' including that line plus one more blank line, | 513 | down to the first occurrence of @code{* Menu} including that line plus |
| 457 | to your working directory @file{texi/dir}, or use the sample provided | 514 | one more blank line, to your working directory |
| 458 | in 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 | ||
| 461 | Once a @file{dir} file is in place, this command will make the entry. | 518 | Once a @file{dir} file is in place, this command will make the entry: |
| 462 | install-info --infodir=. tramp.info | 519 | |
| 463 | If you want it in a specific category | 520 | @example |
| 464 | (see @kbd{man install-info} for further details) | 521 | install-info --infodir=. tramp.info |
| 465 | @end example | 522 | @end example |
| 466 | 523 | ||
| 524 | If you want it in a specific category see @kbd{man install-info} for | ||
| 525 | further details. | ||
| 526 | |||
| 467 | If the environment variable @env{INFOPATH} is set, add the directory | 527 | If 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 |
| 473 | XEmacs 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 | |
| 479 | For XEmacs users, the package @file{fsf-compat} must be installed. | 546 | For @value{emacs-name}, the package @file{fsf-compat} must be installed. |
| 480 | For details on package installation, see @ref{Packages, , ,xemacs}. | 547 | For 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 | 550 | documentation at |
| 484 | site}.) | 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 |
| 493 | installed. It is initially configured to use the @command{sh} program | 562 | installed. It is initially configured to use the @command{ssh} program |
| 494 | to connect to the remote host and to use base-64 encoding (on the | 563 | to connect to the remote host and to use base-64 encoding (on the |
| 495 | remote host, via @command{mimencode}, and on the local host via the | 564 | remote host, via @command{mimencode}, and on the local host via the |
| 496 | built-in support for base-64 encoding in Emacs). | 565 | built-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 |
| 543 | Loading or saving a remote file requires that the content of the file | 613 | Loading or saving a remote file requires that the content of the file |
| 544 | be transferred between the two machines. The content of the file can be | 614 | be transfered between the two machines. The content of the file can be |
| 545 | transferred over the same connection used to log in to the remote | 615 | transfered over the same connection used to log in to the remote |
| 546 | machine or the file can be transferred through another connection using | 616 | machine or the file can be transfered through another connection using |
| 547 | a remote copy program such as @command{rcp}, @command{scp} or | 617 | a 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 |
| 549 | latter are called @dfn{out-of-band methods} or @dfn{external transfer | 619 | latter 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} | |||
| 643 | that use the @command{ssh1} and @command{ssh2} commands explicitly. If | 713 | that use the @command{ssh1} and @command{ssh2} commands explicitly. If |
| 644 | you don't know what these are, you do not need these options. | 714 | you don't know what these are, you do not need these options. |
| 645 | 715 | ||
| 646 | All the methods based on @command{ssh} have an additional kludgey | 716 | All the methods based on @command{ssh} have an additional kludgy |
| 647 | feature: you can specify a host name which looks like @file{host#42} | 717 | feature: 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 |
| 649 | means to connect to the given host but to also pass @code{-p 42} as | 719 | means 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. | |||
| 776 | As you expect, this is similar to @option{sm}, only a little | 846 | As you expect, this is similar to @option{sm}, only a little |
| 777 | different. Whereas @option{sm} opens a normal interactive shell on | 847 | different. Whereas @option{sm} opens a normal interactive shell on |
| 778 | the remote host, this option uses @samp{ssh -t -t @var{host} -l | 848 | the 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 |
| 780 | where the normal login shell is set up to ask them a number of | 850 | where the normal login shell is set up to ask them a number of |
| 781 | questions when logging in. This procedure avoids these questions, and | 851 | questions when logging in. This procedure avoids these questions, and |
| 782 | just gives @tramp{} a more-or-less `standard' login shell to work | 852 | just 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} | |||
| 901 | session can begin to absorb the advantage that the lack of encoding and | 971 | session can begin to absorb the advantage that the lack of encoding and |
| 902 | decoding presents. | 972 | decoding presents. |
| 903 | 973 | ||
| 904 | All the @command{ssh} based methods support the kludgey @samp{-p} | 974 | All the @command{ssh} based methods support the kludgy @samp{-p} |
| 905 | feature where you can specify a port number to connect to in the host | 975 | feature where you can specify a port number to connect to in the host |
| 906 | name. For example, the host name @file{host#42} tells Tramp to | 976 | name. For example, the host name @file{host#42} tells Tramp to |
| 907 | specify @samp{-p 42} in the argument list for @command{ssh}. | 977 | specify @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 | |||
| 1097 | example: | 1167 | example: |
| 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 | ||
| 1104 | Now you can use a @code{sshf} hop which connects to port 4400 instead of | 1175 | Now you can use an @code{sshf} hop which connects to port 4400 instead of |
| 1105 | the standard port. | 1176 | the standard port. |
| 1106 | 1177 | ||
| 1107 | 1178 | ||
| @@ -1175,6 +1246,105 @@ For the time being, I'll refer you to the Lisp documentation of that | |||
| 1175 | variable, accessible with @kbd{C-h v tramp-methods @key{RET}}. | 1246 | variable, 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 | |||
| 1255 | The variable @code{tramp-completion-function-alist} is intended to | ||
| 1256 | customize, which files are taken into account for user and host name | ||
| 1257 | completion (@pxref{Filename completion}). For every method, it keeps | ||
| 1258 | a set of configuration files, accompanied by a Lisp function able to | ||
| 1259 | parse that file. Entries in @code{tramp-completion-function-alist} | ||
| 1260 | have the form (@var{method} @var{pair1} @var{pair2} ...). | ||
| 1261 | |||
| 1262 | Each @var{pair} is composed of (@var{function} @var{file}). | ||
| 1263 | @var{function} is responsible to extract user names and host names | ||
| 1264 | from @var{file} for completion. There are two functions which access | ||
| 1265 | this variable: | ||
| 1266 | |||
| 1267 | @defun tramp-get-completion-function method | ||
| 1268 | This function returns the list of completion functions for @var{method}. | ||
| 1269 | |||
| 1270 | Example: | ||
| 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 | ||
| 1280 | This function sets @var{function-list} as list of completion functions | ||
| 1281 | for @var{method}. | ||
| 1282 | |||
| 1283 | Example: | ||
| 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 | |||
| 1294 | The following predefined functions parsing configuration files exists: | ||
| 1295 | |||
| 1296 | @table @asis | ||
| 1297 | @item @code{tramp-parse-rhosts} | ||
| 1298 | @findex tramp-parse-rhosts | ||
| 1299 | |||
| 1300 | This function parses files which are syntactical equivalent to | ||
| 1301 | @file{~/.rhosts}. It returns both host names and user names, if | ||
| 1302 | specified. | ||
| 1303 | |||
| 1304 | @item @code{tramp-parse-shosts} | ||
| 1305 | @findex tramp-parse-shosts | ||
| 1306 | |||
| 1307 | This function parses files which are syntactical equivalent to | ||
| 1308 | @file{/etc/ssh_known_hosts}. Since there are no user names specified | ||
| 1309 | in such files, it can return host names only. | ||
| 1310 | |||
| 1311 | @item @code{tramp-parse-hosts} | ||
| 1312 | @findex tramp-parse-hosts | ||
| 1313 | |||
| 1314 | A function dedicated to @file{/etc/hosts} style files. It returns | ||
| 1315 | host names only. | ||
| 1316 | |||
| 1317 | @item @code{tramp-parse-passwd} | ||
| 1318 | @findex tramp-parse-passwd | ||
| 1319 | |||
| 1320 | Finally a method which parses @file{/etc/passwd} like files. | ||
| 1321 | Obviously, it can return user names only. | ||
| 1322 | @end table | ||
| 1323 | |||
| 1324 | @ifset emacs | ||
| 1325 | A 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 | |||
| 1330 | If you want to keep your own data in a file, with your own structure, | ||
| 1331 | you might provide such a function as well. This function must meet | ||
| 1332 | the 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 | ||
| 1336 | function must return a list of (@var{user} @var{host}), which are | ||
| 1337 | taken as candidates for user and host name completion. | ||
| 1338 | |||
| 1339 | Example: | ||
| 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. | |||
| 1209 | To add a directory to the remote search path, you could use code such | 1379 | To add a directory to the remote search path, you could use code such |
| 1210 | as: | 1380 | as: |
| 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: | |||
| 1228 | As explained in the @ref{Overview} section, @tramp{} connects to the | 1398 | As explained in the @ref{Overview} section, @tramp{} connects to the |
| 1229 | remote host and talks to the shell it finds there. Of course, when you | 1399 | remote host and talks to the shell it finds there. Of course, when you |
| 1230 | log in, the shell executes its init files. Suppose your init file | 1400 | log in, the shell executes its init files. Suppose your init file |
| 1231 | requires you to enter the birthdate of your mother; clearly @tramp{} | 1401 | requires you to enter the birth date of your mother; clearly @tramp{} |
| 1232 | does not know this and hence fails to log you in to that host. | 1402 | does not know this and hence fails to log you in to that host. |
| 1233 | 1403 | ||
| 1234 | There are different possible strategies for pursuing this problem. One | 1404 | There 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 | |||
| 1270 | recognizes the @code{>} character as the end of the prompt, but it is | 1440 | recognizes the @code{>} character as the end of the prompt, but it is |
| 1271 | not at the end of the buffer. | 1441 | not at the end of the buffer. |
| 1272 | 1442 | ||
| 1443 | @item @var{tramp-shell-prompt-pattern} | ||
| 1444 | @vindex tramp-shell-prompt-pattern | ||
| 1445 | |||
| 1446 | This regular expression is used by @tramp{} in the same way as | ||
| 1447 | @code{shell-prompt-pattern}, to match prompts from the remote shell. | ||
| 1448 | This second variable exists because the prompt from the remote shell | ||
| 1449 | might be different from the prompt from a local shell --- after all, | ||
| 1450 | the whole point of @tramp{} is to log in to remote hosts as a | ||
| 1451 | different 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 | ||
| 1454 | circumstances. | ||
| 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 | ||
| 1277 | Some people invoke the @code{tset} program from their shell startup | 1460 | Some people invoke the @code{tset} program from their shell startup |
| 1278 | scripts which asks the user about the terminal type of the shell. Maybe | 1461 | scripts which asks the user about the terminal type of the shell. |
| 1279 | some shells ask other questions when they are started. @tramp{} does | 1462 | Maybe some shells ask other questions when they are started. @tramp{} |
| 1280 | not know how to answer these questions. (A facility for enabling | 1463 | does not know how to answer these questions. There are two approaches |
| 1281 | @tramp{} to answer these questions is planned for some future version, | 1464 | for dealing with this problem. One approach is to take care that the |
| 1282 | but don't hold your breath.) | 1465 | shell does not ask any questions when invoked from @tramp{}. You can |
| 1283 | 1466 | do this by checking the @code{TERM} environment variable, it will be | |
| 1284 | Therefore, you should take care that the shell does not ask any | 1467 | set to @code{dumb} when connecting. |
| 1285 | questions when invoked from @tramp{}. You can do this by checking the | ||
| 1286 | @code{TERM} environment variable, it will be set to @code{dumb} when | ||
| 1287 | connecting. | ||
| 1288 | 1468 | ||
| 1289 | @vindex tramp-terminal-type | 1469 | @vindex tramp-terminal-type |
| 1290 | The variable @code{tramp-terminal-type} can be used to change this value | 1470 | The variable @code{tramp-terminal-type} can be used to change this value |
| 1291 | @code{dumb}. | 1471 | to @code{dumb}. |
| 1472 | |||
| 1473 | The other approach is to teach @tramp{} about these questions. See | ||
| 1474 | the 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 | ||
| 1318 | Files are specified to @tramp{} using a formalized syntax specifying the | 1502 | Files are specified to @tramp{} using a formalized syntax specifying the |
| 1319 | details of the system to connect to. This is similar to the syntax used | 1503 | details of the system to connect to. This is similar to the syntax used |
| 1320 | by the @command{EFS} and @command{Ange-FTP} packages. | 1504 | by the @value{ftp-package-name} package. |
| 1321 | 1505 | ||
| 1506 | @cindex type-ahead | ||
| 1507 | Something that might happen which surprises you is that Emacs | ||
| 1508 | remembers all your keystrokes, so if you see a password prompt from | ||
| 1509 | Emacs, say, and hit @kbd{@key{RET}} twice instead of once, then the | ||
| 1510 | second keystroke will be processed by Emacs after @tramp{} has done | ||
| 1511 | its thing. Why, this type-ahead is normal behavior, you say. Right | ||
| 1512 | you are, but be aware that opening a remote file might take quite a | ||
| 1513 | while, maybe half a minute when a connection needs to be opened. | ||
| 1514 | Maybe after half a minute you have already forgotten that you hit that | ||
| 1515 | key! | ||
| 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 | ||
| 1335 | On Emacs, the Ange-FTP and Tramp filenames use a unified syntax. On | 1530 | To access the file @var{path} on the remote machine @var{machine} you |
| 1336 | XEmacs, EFS and Tramp use different formats for the filenames. | 1531 | would specify the filename |
| 1337 | Therefore, the following will describe the Emacs and XEmacs cases | 1532 | @file{@value{tramp-prefix}@var{machine}@value{tramp-postfix}@var{path}}. |
| 1338 | separately. | 1533 | This will connect to @var{machine} and transfer the file using the |
| 1534 | default method. @xref{Default Method}. | ||
| 1339 | 1535 | ||
| 1340 | On Emacs, to access the file @var{path} on the remote machine | 1536 | Some 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} | ||
| 1343 | and transfer the file using the default method. @xref{Default | ||
| 1344 | Method}. On XEmacs, use @file{/[@var{machine}]@var{path}}. (The | ||
| 1345 | square brackets are part of the file name.) | ||
| 1346 | |||
| 1347 | Some examples of @tramp{} filenames are shown below. In each case, | ||
| 1348 | the Emacs-style filename is shown first, then the XEmacs-style | ||
| 1349 | filename. | ||
| 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 | ||
| 1354 | Edit the file @file{.emacs} in your home directory on the machine | 1540 | Edit 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 | ||
| 1359 | This edits the same file, using the fully qualified domain name of | 1544 | This edits the same file, using the fully qualified domain name of |
| 1360 | the machine. | 1545 | the machine. |
| 1361 | 1546 | ||
| 1362 | @item /melancholia:~/.emacs | 1547 | @item @value{tramp-prefix}melancholia@value{tramp-postfix}~/.emacs |
| 1363 | @itemx /[melancholia]~/.emacs | ||
| 1364 | This also edits the same file --- the @file{~} is expanded to your | 1548 | This also edits the same file --- the @file{~} is expanded to your |
| 1365 | home directory on the remote machine, just like it is locally. | 1549 | home 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 | ||
| 1369 | This edits the file @file{.emacs} in the home directory of the user | 1552 | This 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>} |
| 1371 | construct is expanded to the home directory of that user on the remote | 1554 | construct is expanded to the home directory of that user on the remote |
| 1372 | machine. | 1555 | machine. |
| 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 | ||
| 1376 | This edits the file @file{/etc/squid.conf} on the machine | 1558 | This 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 | ||
| 1381 | Unless you specify a different name to use, @tramp{} will use the current | 1563 | Unless you specify a different name to use, @tramp{} will use the |
| 1382 | local user name as the remote user name to log in with. If you need to | 1564 | current local user name as the remote user name to log in with. If you |
| 1383 | log in as a different user, you can specify the user name as part of the | 1565 | need to log in as a different user, you can specify the user name as |
| 1384 | filename. | 1566 | part of the filename. |
| 1385 | 1567 | ||
| 1386 | On Emacs, to log in to the remote machine as a specific user, you use | 1568 | To log in to the remote machine as a specific user, you use the syntax |
| 1387 | the 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}}. |
| 1388 | XEmacs, use @file{/[@var{user}@@@var{machine}]/path/to.file}. That | 1570 | That means that connecting to @code{melancholia} as @code{daniel} and |
| 1389 | means that connecting to @code{melancholia} as @code{daniel} and | ||
| 1390 | editing @file{.emacs} in your home directory you would specify | 1571 | editing @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 | ||
| 1395 | It is also possible to specify other file transfer methods | 1574 | It 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. |
| 1397 | done 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 | 1577 | This is done by putting the method before the user and host name, as |
| 1399 | done by replacing the initial @file{/[} with @file{/[<method>/}. | 1578 | in |
| 1400 | (Note the trailing slash!) The user, machine and file specification | 1579 | @file{@value{tramp-prefix}@var{method}@value{tramp-postfix-single-hop}} |
| 1401 | remain the same. | 1580 | (note the trailing colon). |
| 1581 | @end ifset | ||
| 1582 | @ifset xemacs | ||
| 1583 | This 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 | ||
| 1588 | The user, machine and file specification remain the same. | ||
| 1402 | 1589 | ||
| 1403 | So, to connect to the machine @code{melancholia} as @code{daniel}, | 1590 | So, to connect to the machine @code{melancholia} as @code{daniel}, |
| 1404 | using the @option{su} method to transfer files, and edit @file{.emacs} | 1591 | using the @option{su} method to transfer files, and edit @file{.emacs} |
| 1405 | in my home directory I would specify the filename | 1592 | in 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 | ||
| 1415 | The syntax of multi-hop file names is necessarily slightly different | 1601 | The syntax of multi-hop file names is necessarily slightly different |
| 1416 | than the syntax of other @tramp{} file names. Here's an example multi-hop | 1602 | than the syntax of other @tramp{} file names. Here's an example |
| 1417 | file name, first in Emacs syntax and then in XEmacs syntax: | 1603 | multi-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 | ||
| 1422 | This is quite a mouthful. So let's go through it step by step. The | 1609 | This is quite a mouthful. So let's go through it step by step. The |
| 1423 | file name consists of three parts. On Emacs, the parts are separated | 1610 | file name consists of three parts. |
| 1424 | by colons, on XEmacs they are separated by slashes and square | 1611 | @ifset emacs |
| 1425 | brackets. The first part is @file{/multi:} (or @file{/[multi}), the | 1612 | The parts are separated by colons |
| 1426 | method 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. | 1615 | The 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 |
| 1430 | this file name has more than two colons in it.) The final part is | 1617 | The first part is @file{@value{tramp-prefix}multi}, the method |
| 1431 | @file{/path/to.file} and specifies the file name on the remote host. | 1618 | specification. 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} | ||
| 1620 | and specifies the hops. The final part is @file{/path/to.file} and | ||
| 1621 | specifies the file name on the remote host. | ||
| 1432 | 1622 | ||
| 1433 | The first part and the final part should be clear. @ref{Multi-hop | 1623 | The first part and the final part should be clear. @ref{Multi-hop |
| 1434 | Methods}, for a list of alternatives for the method specification. | 1624 | Methods}, for a list of alternatives for the method specification. |
| 1435 | 1625 | ||
| 1436 | The second part can be subdivided again into components, so-called hops. | 1626 | The second part can be subdivided again into components, so-called |
| 1437 | In the above file name, there are two hops, @file{rsh:out@@gate} and | 1627 | hops. 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 | ||
| 1440 | Each hop can @emph{again} be subdivided into (three) components, the | 1631 | Each 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 |
| 1442 | meaning of the second and third component should be clear, and the hop | 1633 | meaning of the second and third component should be clear, and the hop |
| 1443 | method says what program to use to perform that hop. | 1634 | method says what program to use to perform that hop. |
| 1444 | 1635 | ||
| 1445 | The first hop, @file{rsh:out@@gate}, says to use @command{rsh} to log in | 1636 | The first hop, @file{rsh@value{tramp-postfix-multi-hop}out@@gate}, |
| 1446 | as user @code{out} to the host @code{gate}. Starting at that host, the | 1637 | says to use @command{rsh} to log in as user @code{out} to the host |
| 1447 | second hop, @file{telnet:kai@@real.host}, says to use @command{telnet} | 1638 | @code{gate}. Starting at that host, the second hop, |
| 1448 | to log in as user @code{kai} to host @code{real.host}. | 1639 | @file{telnet@value{tramp-postfix-multi-hop}kai@@real.host}, says to |
| 1640 | use @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. | ||
| 1644 | The variable @code{tramp-multi-connection-function-alist} contains the | ||
| 1645 | list of possible hop methods and information on how to execute them, | ||
| 1646 | should you want to add your own. | ||
| 1449 | 1647 | ||
| 1450 | @xref{Multi-hop Methods}, for a list of possible hop method values. The | 1648 | |
| 1451 | variable @var{tramp-multi-connection-function-alist} contains the list of | 1649 | @node Filename completion |
| 1452 | possible hop methods and information on how to execute them, should you | 1650 | @section Filename completion |
| 1453 | want to add your own. | 1651 | @cindex filename completion |
| 1652 | |||
| 1653 | Filename completion works with @tramp{} for both completing methods, | ||
| 1654 | user names and machine names (except multi hop methods) as well as for | ||
| 1655 | files on remote machines. | ||
| 1656 | |||
| 1657 | If 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}} | ||
| 1671 | is a possible completion for the respective method, | ||
| 1672 | @ifset emacs | ||
| 1673 | @samp{tmp/} stands for the directory @file{/tmp} on your local | ||
| 1674 | machine, | ||
| 1675 | @end ifset | ||
| 1676 | and @samp{@value{tramp-prefix-single-hop}toto@value{tramp-postfix}} | ||
| 1677 | might be a host @tramp has detected in your @file{~/.ssh/known_hosts} | ||
| 1678 | file (given you're using default method @option{ssh}). | ||
| 1679 | |||
| 1680 | If 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}}. | ||
| 1682 | Next @kbd{@key{TAB}} brings you all machine names @tramp{} detects in | ||
| 1683 | your @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 | |||
| 1691 | Now you can choose the desired machine, and you can continue to | ||
| 1692 | complete file names on that machine. | ||
| 1693 | |||
| 1694 | As filename completion needs to fetch the listing of files from the | ||
| 1695 | remote machine, this feature is sometimes fairly slow. As @tramp{} | ||
| 1696 | does not yet cache the results of directory listing, there is no gain | ||
| 1697 | in performance the second time you complete filenames. | ||
| 1698 | |||
| 1699 | If the configuration files (@pxref{Customizing Completion}), which | ||
| 1700 | @tramp{} uses for analysis of completion, offer user names, those user | ||
| 1701 | names 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 |
| 1462 | file management tool to manage files on any machine you have access to | 1709 | file management tool to manage files on any machine you have access to |
| 1463 | over the Internet. | 1710 | over the Internet. |
| 1464 | 1711 | ||
| 1465 | Filename completion also works with @tramp{} for files on remote machines | ||
| 1466 | although there is no completion for user names or machine names at this | ||
| 1467 | stage. | ||
| 1468 | |||
| 1469 | As filename completion needs to fetch the listing of files from the | ||
| 1470 | remote machine, this feature is sometimes fairly slow. As @tramp{} does not | ||
| 1471 | yet cache the results of directory listing, there is no gain in | ||
| 1472 | performance the second time you complete filenames. | ||
| 1473 | |||
| 1474 | If you need to browse a directory tree, Dired is a better choice, at | 1712 | If you need to browse a directory tree, Dired is a better choice, at |
| 1475 | present, than filename completion. Dired has its own cache mechanism | 1713 | present, than filename completion. Dired has its own cache mechanism |
| 1476 | and will only fetch the directory listing once. | 1714 | and will only fetch the directory listing once. |
| @@ -1516,11 +1754,16 @@ development team to analyze and correct the problem. | |||
| 1516 | @item | 1754 | @item |
| 1517 | Where can I get the latest @tramp{}? | 1755 | Where 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}. | ||
| 1521 | There 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 | ||
| 1763 | There is also a Savannah project page. | ||
| 1764 | |||
| 1765 | @noindent | ||
| 1766 | @uref{https://savannah.gnu.org/projects/tramp/} | ||
| 1524 | 1767 | ||
| 1525 | @item | 1768 | @item |
| 1526 | Which systems does it work on? | 1769 | Which 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 | ||
| 1557 | If you do, please try and find out exactly the conditions required for | 1800 | If you do, please try and find out exactly the conditions required for |
| 1558 | the @code{EFS} handlers to fire. If you can, putting a breakpoint on | 1801 | the 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 |
| 1560 | report would make it easier for the developers to work out what is going | 1803 | report would make it easier for the developers to work out what is |
| 1561 | wrong. | 1804 | going 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 | ||
| 1660 | Unlike EFS and Ange-FTP, @tramp{} has full shell access to the remote | 1903 | Unlike @value{ftp-package-name}, @tramp{} has full shell access to the |
| 1661 | machine. This makes it possible to provide version control for files | 1904 | remote machine. This makes it possible to provide version control for |
| 1662 | accessed under @tramp{}. | 1905 | files accessed under @tramp{}. |
| 1663 | 1906 | ||
| 1664 | The actual version control binaries must be installed on the remote | 1907 | The actual version control binaries must be installed on the remote |
| 1665 | machine, accessible in the directories specified in | 1908 | machine, 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. | ||