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