1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-16 17:19:41 +00:00

Port Tramp manual to latest Texinfo

Otherwise, 'make pdf' did not work (Bug#22416).
* doc/misc/tramp.texi (xxx, yyy): Remove macros.
(trampfn): Specialize to the case where METHOD is nonempty.
The 2nd argument is now user@host, not 2nd user and 3rd host args.
All uses changed.
(trampf): New macro.
This commit is contained in:
Paul Eggert 2016-01-24 11:40:26 -08:00
parent 7faf9193cd
commit 3772f44422

View File

@ -18,52 +18,21 @@
@include trampver.texi
@c Macro for formatting a file name according to the respective syntax.
@c xxx and yyy are auxiliary macros in order to omit leading and
@c Macro arguments should not have any leading or
@c trailing whitespace. Not very elegant, but I don't know it better.
@c There are subtle differences between texinfo 4.13 and 5.0. We must
@c declare two versions of the macro. This will be improved, hopefully.
@c Texinfo 5.0.
@ifset txicommandconditionals
@macro xxx {one}
@set \one\
@end macro
@macro yyy {one, two}
@xxx{x\one\}@c
@ifclear x
\one\@w{}\two\@c
@end ifclear
@clear x\one\
@end macro
@macro trampfn {method, user, host, localname}
@macro trampfn {method, userhost, localname}
@value{prefix}@c
@yyy{\method\,@value{postfixhop}}@c
@yyy{\user\,@@}@c
\host\@value{postfix}\localname\
@end macro
@end ifset
@c Texinfo 4.13.
@ifclear txicommandconditionals
@macro xxx {one}@c
@set \one\@c
\method\@value{postfixhop}@c
\userhost\@value{postfix}\localname\
@end macro
@macro yyy {one, two}@c
@xxx{x\one\}@c
@ifclear x@c
\one\@w{}\two\@c
@end ifclear
@clear x\one\@c
@end macro
@c Similar, but without a method prefix.
@macro trampfn {method, user, host, localname}@c
@value{prefix}@yyy{\method\,@value{postfixhop}}@yyy{\user\,@@}\host\@value{postfix}\localname\@c
@macro trampf {userhost, localname}
@value{prefix}@c
\userhost\@value{postfix}\localname\
@end macro
@end ifclear
@copying
Copyright @copyright{} 1999--2016 Free Software Foundation, Inc.
@ -499,7 +468,7 @@ In December 2001, XEmacs package repository adds @value{tramp}.
@value{tramp} is initially configured to use the @command{scp} program
to connect to the remote host. Just type @kbd{C-x C-f} and then enter
file name @file{@trampfn{, user, host, /path/to.file}}. For details,
file name @file{@trampf{user@@host,/path/to.file}}. For details,
see @xref{Default Method}.
For problems related to the behavior of remote shell, see @ref{Remote
@ -913,7 +882,7 @@ authorization, @value{tramp} provides for an extended syntax in
percent symbol, and domain is the windows domain name). An example:
@example
@trampfn{smb, daniel%BIZARRE, melancholia, /daniel$$/.emacs}
@trampfn{smb,daniel%BIZARRE@@melancholia,/daniel$$/.emacs}
@end example
where user @code{daniel} connects as a domain user to the SMB host
@ -925,7 +894,7 @@ substitute the domain name with the name of the local host in
UPPERCASE as shown here:
@example
@trampfn{smb, daniel%MELANCHOLIA, melancholia, /daniel$$/.emacs}
@trampfn{smb,daniel%MELANCHOLIA@@melancholia,/daniel$$/.emacs}
@end example
where user @code{daniel} connects as local user to the SMB host
@ -969,7 +938,7 @@ the custom option @option{tramp-adb-connect-if-not-connected} is not
@value{tramp} does not require a host name part of the remote file
name when a single Android device is connected to @command{adb}.
@value{tramp} instead uses @file{@trampfn{adb, , ,}} as the default
@value{tramp} instead uses @file{@trampfn{adb,,}} as the default
name. @command{adb devices} shows available host names.
@option{adb} method normally does not need user name to authenticate
@ -1011,7 +980,7 @@ active, @pxref{Top, , D-Bus, dbus}.
This method is for connecting to remote hosts with the Apple Filing
Protocol for accessing files on Mac OS X volumes. @value{tramp} access
syntax requires a leading volume (share) name, for example:
@file{@trampfn{afp, user, host, /volume}}.
@file{@trampfn{afp,user@@host,/volume}}.
@item @option{dav}
@item @option{davs}
@ -1179,7 +1148,7 @@ access and it has the most reasonable security protocols, use
@file{/etc/motd} file on the otherhost:
@example
@kbd{C-x C-f @trampfn{ssh, root, otherhost,/etc/motd} @key{RET}}
@kbd{C-x C-f @trampfn{ssh,root@@otherhost,/etc/motd} @key{RET}}
@end example
If @option{ssh} is unavailable for whatever reason, look for other
@ -1190,7 +1159,7 @@ For editing local files as @option{su} or @option{sudo} methods, try
the shortened syntax of @samp{root}:
@example
@kbd{C-x C-f @trampfn{su, , , /etc/motd} @key{RET}}
@kbd{C-x C-f @trampfn{su,,/etc/motd} @key{RET}}
@end example
For editing large files, @option{scp} is faster than @option{ssh}.
@ -1263,7 +1232,7 @@ default user and default host can be overridden as follows:
tramp-default-host "target")
@end lisp
With both defaults set, @samp{@trampfn{ssh, , ,}} will connect
With both defaults set, @samp{@trampfn{ssh,,}} will connect
@value{tramp} to John's home directory on target.
@ifset emacs
@ -1323,7 +1292,7 @@ user @samp{bird} to reach remote hosts outside the local domain:
@lisp
(add-to-list 'tramp-default-proxies-alist
'("\\." nil "@trampfn{ssh, bird, bastion.your.domain,}"))
'("\\." nil "@trampfn{ssh,bird@@bastion.your.domain,}"))
(add-to-list 'tramp-default-proxies-alist
'("\\.your\\.domain\\'" nil nil))
@end lisp
@ -1339,7 +1308,7 @@ connect to @samp{bastion.your.domain}, then:
(add-to-list 'tramp-default-proxies-alist
'("\\`bastion\\.your\\.domain\\'"
"\\`bird\\'"
"@trampfn{ssh, , jump.your.domain,}"))
"@trampfn{ssh,jump.your.domain,}"))
@end lisp
@var{proxy} can take patterns @code{%h} or @code{%u} for @var{host} or
@ -1351,10 +1320,10 @@ access, then use this alist entry:
@lisp
(add-to-list 'tramp-default-proxies-alist
'("\\.your\\.domain\\'" "\\`root\\'" "@trampfn{ssh, , %h,}"))
'("\\.your\\.domain\\'" "\\`root\\'" "@trampfn{ssh,%h,}"))
@end lisp
Opening @file{@trampfn{sudo, , randomhost.your.domain,}} first
Opening @file{@trampfn{sudo,randomhost.your.domain,}} first
connects to @samp{randomhost.your.domain} via @code{ssh} under your
account name, and then perform @code{sudo -u root} on that host.
@ -1370,7 +1339,7 @@ local one, first connect via @command{ssh}, and then apply
@lisp
(add-to-list 'tramp-default-proxies-alist
'(nil "\\`root\\'" "@trampfn{ssh, , %h,}"))
'(nil "\\`root\\'" "@trampfn{ssh,%h,}"))
(add-to-list 'tramp-default-proxies-alist
'((regexp-quote (system-name)) nil nil))
@end lisp
@ -1395,7 +1364,7 @@ discussion of ethical issues.} Then the configuration is:
@lisp
(add-to-list 'tramp-default-proxies-alist
'("\\`host\\.other\\.domain\\'" nil
"@trampfn{tunnel, , proxy.your.domain#3128,}"))
"@trampfn{tunnel,proxy.your.domain#3128,}"))
@end lisp
Gateway methods in a multiple hop chain can be declared only as the first hop.
@ -1647,8 +1616,7 @@ cases, two different connections may result in the same persistent
information. For example, connecting to a host using @command{ssh} and
connecting to the same host through @code{sshd} on port 3001. Both
access methods result in nearly identical persistent specifications
@file{@trampfn{ssh, , localhost,}} and @file{@trampfn{ssh, ,
localhost#3001,}}.
@file{@trampfn{ssh,localhost,}} and @file{@trampfn{ssh,localhost#3001,}}.
Changing host names could avoid duplicates. One way is to add a
@option{Host} section in @file{~/.ssh/config} (@pxref{Frequently Asked
@ -1680,10 +1648,10 @@ remote shell:
@lisp
(add-to-list 'tramp-connection-properties
(list (regexp-quote "@trampfn{ssh, user, randomhost.your.domain,}")
(list (regexp-quote "@trampfn{ssh,user@@randomhost.your.domain,}")
"remote-shell" "/bin/ksh"))
(add-to-list 'tramp-connection-properties
(list (regexp-quote "@trampfn{ssh, user, randomhost.your.domain,}")
(list (regexp-quote "@trampfn{ssh,user@@randomhost.your.domain,}")
"remote-shell-login" '("-")))
@end lisp
@ -1699,7 +1667,7 @@ special property @samp{busybox}. For example:
@lisp
(add-to-list 'tramp-connection-properties
(list (regexp-quote "@trampfn{ssh, user, randomhost.your.domain,}")
(list (regexp-quote "@trampfn{ssh,user@@randomhost.your.domain,}")
"busybox" t))
@end lisp
@ -2002,8 +1970,8 @@ directory for temporary files:
@end lisp
@noindent
Open a remote connection with the command @kbd{C-x C-f @trampfn{ssh, ,
192.168.0.26#2222, }}, where @command{sshd} is listening on port
Open a remote connection with the command @kbd{C-x C-f
@trampfn{ssh,192.168.0.26#2222,}}, where @command{sshd} is listening on port
@samp{2222}.
To add a corresponding entry to the @file{~/.ssh/config} file
@ -2027,7 +1995,7 @@ the previous example, fix the connection properties as follows:
@noindent
Open a remote connection with a more concise command @kbd{C-x C-f
@trampfn{ssh, , android, }}.
@trampfn{ssh,android,}}.
@node Auto-save and Backup
@ -2056,7 +2024,7 @@ exposed. @value{emacsname} by default writes backup files to the same
directory as the original files unless changed to another location,
such as @file{~/.emacs.d/backups/}. Such a directory will also be used
by default by @value{tramp} when using, say, a restricted file
@file{@trampfn{su, root, localhost, /etc/secretfile}}. The backup file
@file{@trampfn{su,root@@localhost,/etc/secretfile}}. The backup file
of the secretfile is now owned by the user logged in from tramp and
not root.
@ -2145,15 +2113,13 @@ Example:
@end ifset
@noindent
The backup file name of @file{@trampfn{su, root, localhost,
/etc/secretfile}} would be
The backup file name of
@file{@trampfn{su,root@@localhost,/etc/secretfile}} would be
@ifset emacs
@file{@trampfn{su, root, localhost,
~/.emacs.d/backups/!su:root@@localhost:!etc!secretfile~}}
@file{@trampfn{su,root@@localhost,~/.emacs.d/backups/!su:root@@localhost:!etc!secretfile~}}
@end ifset
@ifset xemacs
@file{@trampfn{su, root, localhost,
~/.emacs.d/backups/![su!root@@localhost]!etc!secretfile~}}
@file{@trampfn{su,root@@localhost,~/.emacs.d/backups/![su!root@@localhost]!etc!secretfile~}}
@end ifset
Just as for backup files, similar issues of file naming affect
@ -2263,7 +2229,7 @@ passwords or authentication appear in the minibuffer. Hitting
@cindex file name syntax
@cindex file name examples
@file{@trampfn{, , host, localfilename}}
@file{@trampf{host,localfilename}}
opens file @var{localfilename} on the remote host @var{host}, using
the default method. @xref{Default Method}.
@ -2289,9 +2255,9 @@ For the file @file{/etc/squid.conf} on the host @code{melancholia}.
@end table
@var{host} can take IPv4 or IPv6 address, as in @file{@trampfn{, ,
127.0.0.1, .emacs}} or @file{@trampfn{, ,
@value{ipv6prefix}::1@value{ipv6postfix}, .emacs}}.
@var{host} can take IPv4 or IPv6 address, as in
@file{@trampf{127.0.0.1,.emacs}} or
@file{@trampf{@value{ipv6prefix}::1@value{ipv6postfix},.emacs}}.
@ifset emacs
For syntactical reasons, IPv6 addresses must be embedded in square
brackets @file{@value{ipv6prefix}} and @file{@value{ipv6postfix}}.
@ -2302,10 +2268,10 @@ remote user name for log in to the remote host. Specifying a different
name using the proper syntax will override this default behavior:
@example
@trampfn{, user, host, path/to.file}
@trampf{user@@host,path/to.file}
@end example
@file{@trampfn{, daniel, melancholia, .emacs}} is for file
@file{@trampf{daniel@@melancholia,.emacs}} is for file
@file{.emacs} in @code{daniel}'s home directory on the host,
@code{melancholia}.
@ -2326,15 +2292,14 @@ The syntax specifications for user, host, and file do not change.
To connect to the host @code{melancholia} as @code{daniel}, using
@option{ssh} method for @file{.emacs} in @code{daniel}'s home
directory, the full specification is: @file{@trampfn{ssh, daniel,
melancholia, .emacs}}.
directory, the full specification is:
@file{@trampfn{ssh,daniel@@melancholia,.emacs}}.
A remote file name containing a host name, which is the same string as
a method name, is not allowed.
For specifying port numbers, affix @file{#<port>} to the host
name. For example: @file{@trampfn{ssh, daniel, melancholia#42,
.emacs}}.
name. For example: @file{@trampfn{ssh,daniel@@melancholia#42,.emacs}}.
@node File name completion
@ -2355,7 +2320,7 @@ For example, type @kbd{C-x C-f @value{prefix}t @key{TAB}},
@value{tramp} completion choices show up as
@example
@c @multitable {@trampfn{telnet, , melancholia.danann.net,}} {@trampfn{telnet, , 192.168.0.1,}}
@c @multitable {@trampfn{telnet,melancholia.danann.net,}} {@trampfn{telnet,192.168.0.1,}}
@multitable @columnfractions .5 .5
@ifset emacs
@item @value{prefixhop}telnet@value{postfixhop} @tab tmp/
@ -2382,10 +2347,11 @@ shows host names @value{tramp} from @file{/etc/hosts} file, for example.
@example
@multitable @columnfractions .5 .5
@c @multitable {@trampfn{telnet, , melancholia.danann.net,}} {@trampfn{telnet, , 192.168.0.1,}}
@item @trampfn{telnet, , 127.0.0.1,} @tab @trampfn{telnet, , 192.168.0.1,}
@item @trampfn{telnet, , @value{ipv6prefix}::1@value{ipv6postfix},} @tab @trampfn{telnet, , localhost,}
@item @trampfn{telnet, , melancholia.danann.net,} @tab @trampfn{telnet, , melancholia,}
@c @multitable {@trampfn{telnet,melancholia.danann.net,}} {@trampfn{telnet,192.168.0.1,}}
@item @trampfn{telnet,127.0.0.1,} @tab @trampfn{telnet,192.168.0.1,}
@c @item @trampfn{telnet,@value{ipv6prefix}::1@value{ipv6postfix},} @tab @trampfn{telnet,localhost,}
@item @value{prefix}telnet@value{postfixhop}@value{ipv6prefix}::1@value{ipv6postfix}@value{postfix} @tab @trampfn{telnet,localhost,}
@item @trampfn{telnet,melancholia.danann.net,} @tab @trampfn{telnet,melancholia,}
@end multitable
@end example
@ -2415,21 +2381,21 @@ Example:
@example
@ifset emacs
@kbd{C-x C-f @trampfn{telnet, , melancholia, /usr/local/bin//etc} @key{TAB}}
@print{} @trampfn{telnet, , melancholia, /etc}
@kbd{C-x C-f @trampfn{telnet,melancholia,/usr/local/bin//etc} @key{TAB}}
@print{} @trampfn{telnet,melancholia,/etc}
@kbd{C-x C-f @trampfn{telnet, , melancholia, //etc} @key{TAB}}
@kbd{C-x C-f @trampfn{telnet,melancholia,//etc} @key{TAB}}
@print{} /etc
@kbd{C-x C-f @trampfn{telnet, , melancholia, /usr/local/bin///etc} @key{TAB}}
@kbd{C-x C-f @trampfn{telnet,melancholia,/usr/local/bin///etc} @key{TAB}}
@print{} /etc
@end ifset
@ifset xemacs
@kbd{C-x C-f @trampfn{telnet, , melancholia, /usr/local/bin//}}
@print{} @trampfn{telnet, , melancholia, /}
@kbd{C-x C-f @trampfn{telnet,melancholia,/usr/local/bin//}}
@print{} @trampfn{telnet,melancholia,/}
@kbd{C-x C-f @trampfn{telnet, , melancholia, //}}
@kbd{C-x C-f @trampfn{telnet,melancholia,//}}
@print{} /
@end ifset
@end example
@ -2464,8 +2430,7 @@ remote host name and file name. For example, hopping over a single
proxy @samp{bird@@bastion} to a remote file on @samp{you@@remotehost}:
@example
@c @kbd{C-x C-f @trampfn{ssh@value{postfixhop}bird@@bastion|ssh, you,
@c remotehost, /path}}
@c @kbd{C-x C-f @trampfn{ssh@value{postfixhop}bird@@bastion|ssh,you,remotehost,/path}}
@kbd{C-x C-f @value{prefix}ssh@value{postfixhop}bird@@bastion|ssh@value{postfixhop}you@@remotehost@value{postfix}/path}
@end example
@ -2475,7 +2440,7 @@ Proxies can take patterns @code{%h} or @code{%u}.
@code{tramp-default-proxies-alist} and is available for re-use during
that @value{emacsname} session. Subsequent @value{tramp} connections
to the same remote host can then use the shortcut form:
@samp{@trampfn{ssh, you, remotehost, /path}}.
@samp{@trampfn{ssh,you@@remotehost,/path}}.
@defopt tramp-save-ad-hoc-proxies
@vindex tramp-save-ad-hoc-proxies
@ -2631,7 +2596,7 @@ on remote hosts and displays output in buffers on the local
host. Example:
@example
@kbd{C-x C-f @trampfn{sudo, , , } @key{RET}}
@kbd{C-x C-f @trampfn{sudo,,} @key{RET}}
@kbd{M-! tail -f /var/log/syslog.log & @key{RET}}
@end example
@ -2653,14 +2618,14 @@ You must add the module @code{eshell-tramp} to
@kbd{M-x eshell} on a remote host:
@example
@b{~ $} cd @trampfn{sudo, , , /etc} @key{RET}
@b{@trampfn{sudo, root, host, /etc} $} hostname @key{RET}
@b{~ $} cd @trampfn{sudo,,/etc} @key{RET}
@b{@trampfn{sudo,root@@host,/etc} $} hostname @key{RET}
host
@b{@trampfn{sudo, root, host, /etc} $} id @key{RET}
@b{@trampfn{sudo,root@@host,/etc} $} id @key{RET}
uid=0(root) gid=0(root) groups=0(root)
@b{@trampfn{sudo, root, host, /etc} $} find-file shadow @key{RET}
@b{@trampfn{sudo,root@@host,/etc} $} find-file shadow @key{RET}
#<buffer shadow>
@b{@trampfn{sudo, root, host, /etc} $}
@b{@trampfn{sudo,root@@host,/etc} $}
@end example
@ifset emacs
@ -2671,16 +2636,16 @@ uid=0(root) gid=0(root) groups=0(root)
(@pxref{Multi-hops}):
@example
@b{~ $} cd @trampfn{ssh, user, remotehost, /etc} @key{RET}
@b{@trampfn{ssh, user, remotehost, /etc} $} find-file shadow @key{RET}
File is not readable: @trampfn{ssh, user, remotehost, /etc/shadow}
@b{@trampfn{ssh, user, remotehost, /etc} $} sudo find-file shadow @key{RET}
@b{~ $} cd @trampfn{ssh,user@@remotehost,/etc} @key{RET}
@b{@trampfn{ssh,user@@remotehost,/etc} $} find-file shadow @key{RET}
File is not readable: @trampfn{ssh,user@@remotehost,/etc/shadow}
@b{@trampfn{ssh,user@@remotehost,/etc} $} sudo find-file shadow @key{RET}
#<buffer shadow>
@b{@trampfn{ssh, user, remotehost, /etc} $} su - @key{RET}
@b{@trampfn{su, root, remotehost, /root} $} id @key{RET}
@b{@trampfn{ssh,user@@remotehost,/etc} $} su - @key{RET}
@b{@trampfn{su,root@@remotehost,/root} $} id @key{RET}
uid=0(root) gid=0(root) groups=0(root)
@b{@trampfn{su, root, remotehost, /root} $}
@b{@trampfn{su,root@@remotehost,/root} $}
@end example
@end ifset
@ -2702,11 +2667,11 @@ with a remote file name:
@example
@kbd{M-x gdb @key{RET}}
@b{Run gdb (like this):} gdb --annotate=3 @trampfn{ssh, , host, ~/myprog} @key{RET}
@b{Run gdb (like this):} gdb --annotate=3 @trampfn{ssh,host,~/myprog} @key{RET}
@end example
Relative file names are based on the remote default directory. When
@file{myprog.pl} exists in @file{@trampfn{ssh, , host, /home/user}},
@file{myprog.pl} exists in @file{@trampfn{ssh,host,/home/user}},
valid calls include:
@example
@ -2761,8 +2726,9 @@ To open @command{powershell} as a remote shell, use this:
This command flushes all connection related objects. @option{vec} is
the internal representation of a remote connection. When called
interactively, this command lists active remote connections in the
minibuffer. Each connection is of the format @file{@trampfn{method,
user, host, }}. Flushing remote connections also cleans the password
minibuffer. Each connection is of the format
@file{@trampfn{method,user@@host,}}. Flushing remote connections also
cleans the password
cache (@pxref{Password handling}), file cache, connection cache
(@pxref{Connection caching}), and connection buffers.
@end deffn
@ -3226,7 +3192,7 @@ HISTFILE=/dev/null
How to shorten long file names when typing in @value{tramp}?
Adapt several of these approaches to reduce typing. If the full name
is @file{@trampfn{ssh, news, news.my.domain, /opt/news/etc}}, then:
is @file{@trampfn{ssh,news@@news.my.domain,/opt/news/etc}}, then:
@enumerate
@ -3241,11 +3207,11 @@ You can define default methods and user names for hosts,
tramp-default-user "news")
@end lisp
The reduced typing: @kbd{C-x C-f @trampfn{, , news.my.domain, /opt/news/etc}}.
The reduced typing: @kbd{C-x C-f @trampf{news.my.domain,/opt/news/etc}}.
@strong{Note} that there are some useful shortcuts already. Accessing
your local host as @samp{root} user, is possible just by @kbd{C-x C-f
@trampfn{su, , ,}}.
@trampfn{su,,}}.
@item
Use configuration options of the access method:
@ -3260,7 +3226,7 @@ Host xy
User news
@end example
The reduced typing: @kbd{C-x C-f @trampfn{ssh, , xy, /opt/news/etc}}.
The reduced typing: @kbd{C-x C-f @trampfn{ssh,xy,/opt/news/etc}}.
Depending on the number of files in the directories, host names
completion can further reduce key strokes: @kbd{C-x C-f
@ -3274,7 +3240,7 @@ the minibuffer. Environment variables are set either outside
@value{emacsname} or inside @value{emacsname} with Lisp:
@lisp
(setenv "xy" "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}")
(setenv "xy" "@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}")
@end lisp
The reduced typing: @kbd{C-x C-f $xy @key{RET}}.
@ -3295,7 +3261,7 @@ Redefine another key sequence in @value{emacsname} for @kbd{C-x C-f}:
(find-file
(read-file-name
"Find Tramp file: "
"@trampfn{ssh, news, news.my.domain, /opt/news/etc/}"))))
"@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}"))))
@end lisp
Simply typing @kbd{C-x C-y} would prepare minibuffer editing of file
@ -3312,7 +3278,7 @@ Abbreviation list expansion can be used to reduce typing long file names:
@lisp
(add-to-list
'directory-abbrev-alist
'("^/xy" . "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}"))
'("^/xy" . "@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}"))
@end lisp
The reduced typing: @kbd{C-x C-f /xy @key{RET}}.
@ -3329,7 +3295,7 @@ minibuffer:
@lisp
(define-abbrev-table 'my-tramp-abbrev-table
'(("xy" "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}")))
'(("xy" "@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}")))
(add-hook
'minibuffer-setup-hook
@ -3427,7 +3393,7 @@ directory to the cache:
@lisp
(eval-after-load "filecache"
'(file-cache-add-directory
"@trampfn{ssh, news, news.my.domain, /opt/news/etc/}"))
"@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}"))
@end lisp
Then use directory completion in the minibuffer with @kbd{C-x C-f
@ -3479,11 +3445,11 @@ multi-hops}) via bookmarks, recent files,
filecache, bbdb,
@end ifset
or another package, use the full ad-hoc file name including all hops,
like @file{@trampfn{ssh, bird,
bastion|ssh@value{postfixhop}news.my.domain, /opt/news/etc}}.
like
@file{@trampfn{ssh,bird@@bastion|ssh@value{postfixhop}news.my.domain,/opt/news/etc}}.
Alternatively, when saving abbreviated multi-hop file names
@file{@trampfn{ssh, news, news.my.domain, /opt/news/etc}}, the custom
@file{@trampfn{ssh,news@@news.my.domain,/opt/news/etc}}, the custom
option @code{tramp-save-ad-hoc-proxies} must be set non-@code{nil}
value.
@ -3516,7 +3482,7 @@ location.
Then start Emacs Client from the command line:
@example
emacsclient @trampfn{ssh, user, host, /file/to/edit}
emacsclient @trampfn{ssh,user@@host,/file/to/edit}
@end example
@code{user} and @code{host} refer to the local host.
@ -3526,7 +3492,7 @@ script @file{emacsclient.sh}:
@example
#!/bin/sh
emacsclient @trampfn{ssh, $(whoami), $(hostname --fqdn), $1}
emacsclient @trampfn{ssh,$(whoami)@@$(hostname --fqdn),$1}
@end example
Then change the environment variable @env{EDITOR} to point to the