Steve Youngs <[EMAIL PROTECTED]> writes: > |--==> "KG" == Kai Gro <[EMAIL PROTECTED]> writes: > > KG> Steve Youngs <[EMAIL PROTECTED]> writes: > >>No, not at all. I want... > >> > >>C-x C-f /[jrl@frumple] (to get a dired listing of jrl's $HOME on frumple) > >>M-x eshell > >>(make-symbolic-link "/path/to/file1" "/path/to/file2") > >> > >>Where "file1" and "file2" are _both_ on frumple. > > KG> I see. Now I understand your request. But I don't like it :-) > KG> That would mean that the behavior of make-symbolic-link should depend > KG> on the variable default-directory. No, this is not a good idea, I > KG> think. > > KG> My suggestion is to interpret the source of the link (ie, LINKNAME, > KG> the second arg of make-symbolic-link) as a filename and to interpret > KG> the target of the link (ie, FILENAME, the first arg) as a string. > > Hey, whoa, that's not right, you've got the args the wrong way > around... > > ,----[ C-h f make-symbolic-link RET ] > | `make-symbolic-link' is an interactive built-in function > | (make-symbolic-link FILENAME LINKNAME &optional OK-IF-ALREADY-EXISTS) > | > | Documentation: > | Make a symbolic link to FILENAME, named LINKNAME. Both args strings.
If it says "to FILENAME", then FILENAME must be the target of the symlink. Then LINKNAME must be the source. I also tested this (on Emacs, but it's got the same documentation). In the output of "ls -l", it prints something like "x -> y". I use "source" for x and "target" for y. Of course, ln expects the arguments the other way round. Confusing... * (make-symbolic-link "y" "x") * ln -s y x * ls -l ... ... x -> y ... Clear? > | Signals a `file-already-exists' error if a file LINKNAME already exists > | unless optional third argument OK-IF-ALREADY-EXISTS is non-nil. > | A number as third arg means request confirmation if LINKNAME already exists. > | This happens for interactive use with M-x. > `---- > > KG> This way, you can say (make-symbolic-link "xyzzy" > KG> "/[user@host]/path/to/file") and it will always create a symlink > KG> on host, regardless of default-directory. > > So this should be... > > (make-symbolic-link "/[user@host]/path/to/file" "xyzzy") > > And default-directory _should_ play a part for at least two reasons: > > 1) Making a "relative" symbolic link. Yes, it should be used for the source. But in all other cases "/tmp/foo" means a file on the local host; you want it to mean a file on the remote host (if default-directory indicates that). That seems inconsistent. > 2) A symlink should _never_ span different hosts. Well, that's achieved by the target, not by the source. I said that the target should be interpreted as a string. > IMO, what should happen in the above example is: > > Tramp should connect to host if not already connected, setting > default-directory to '/[user@host]/path/to/' if not connected, > or './' if already connected. Then test to see if the OS on > host supports symlinks (signalling the appropriate error if > not). Do the normal 'make-symbolic-link' checks. Strip off > any Tramp filename parts (the "/[...]" bit) and write the > symlink to disc. > > So that would make the correct syntax: > > (make-symbolic-link "/[method/user@host]/path/to/filename" > "/path/to/symlink-name") > > And I'd be very happy with that. :-) Oh, boy. So there should be a new file /path/to/symlink-name on the remote host, which is a symlink pointing to /path/to/filename on the same host? This is just weird. Why don't you agree on putting the user/host spec on the source rather than the target? kai -- A large number of young women don't trust men with beards. (BFBS Radio) _______________________________________________ Tramp-devel mailing list [EMAIL PROTECTED] http://mail.freesoftware.fsf.org/mailman/listinfo/tramp-devel
