[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
compatibility with cygwin-mount
From: |
Matt Swift |
Subject: |
compatibility with cygwin-mount |
Date: |
Mon, 15 Sep 2003 19:25:47 -0400 |
User-agent: |
Gnus/5.1003 (Gnus v5.10.3) Emacs/21.3 (gnu/linux) |
The patch to tramp.el in the old email copied below prevents
cygwin-mount on NTEmacs from working on filenames like "/usr", which
(with a typical Cygwin setup) should load "c:/cygwin/usr". Although
it is not a remote file name, Tramp handles that filename before
cygwin-mount gets a chance to and inhibits the handling by
cygwin-mount that we want.
In any case, I think that the original reason for this patch does not
apply any more: the regexp cygwin-mount uses is
"^/[^:@]*$\\|^/|/[^/:]+\\(\\'\\|/\\)" which I think would never match
a standard Tramp remote name. So perhaps undoing the patch is the
right thing now.
If there is still a problem with remote files being handled by
cygwin-mount, however, I think the best solution (short of a revision
of file-handler conventions that does more bookkeeping so that
handlers can be more intelligent) is simply for tramp to refrain from
inhibiting cygwin-mount when the filename does not match
`tramp-file-name-regexp'. Maybe doing that is not as simple as it
sounds -- it isn't quite easy enough for me to do it immediately and
include the patch (can one assume that (car args) is the right thing
to check?).
(By the way, I don't agree with the opinion that cygwin-mount should
refrain from handling remote files: cygwin-mount doesn't know anything
about what is or is not a remote file, so I don't see why, if there
absolutely must be code that deals explicitly with the combination of
cygwin-mount+tramp, that the code ought to be in cygwin-mount any more
than it ought to be in tramp.)
Alternatively, it is enough in this case to ensure
`cygwin-mount-name-hook-function' is earlier in
`file-name-handler-alist' than the tramp-completion entry; then things
work well with tramp.el as it is. I suppose one way to solve things
in tramp.el is to do the same "repair" trick as done for jka-compr if
cygwin-mount is already loaded, and to issue an "afterload" that does
the same thing if cygwin-mount is loaded later.
----------responding to this earlier message in tramp-devel:
From: Kai Großjohann
Subject: Re: tramp and cygwin-mount
Date: Thu, 05 Dec 2002 10:29:09 +0100
> I've decided to try and get my NTEmacs working nicely once and for
> all. This includes, amongst other things, getting tramp and
> cygwin-mount to play nicely together. Currently, when tramp connects
> to the remote host (via sshx in my case), it tries to test for the
> existence of several paths/files, but somehow, the paths/files end up
> getting expanded by the cygwin-mount package and try to test for local
> cygwin dirs on the remote host.
>
> I've figured out how to get the emacs debugger working and think I've
> found where the two get entangled. About 10 lines into
> tramp-handle-expand-file-name, there is a call to
> (tramp-run-real-handler 'expand-file-name (list name nil)). In the
> debugger, it shows that expand-file-name has a hook which calls
> cygwin-mount-name-hook-function which then bungles up the file name
> (i.e. ~ expands to my home directory on the local machine even though
> tramp is ssh'ed into a remote machine and is sending commands over
> there).
>
> This is where the limits of my understanding of tramp and emacs and
> lisp hit the wall. Is there any way to allow tramp to make the call
> to expand-file-name without the cygwin hook?
IMHO, cygwin-mount should abstain from handling these files. But
maybe it is easier to include a simple workaround for this in Tramp;
then we don't have to wait for cygwin-mount to be fixed.
What's the value of file-name-handler-alist? Then I will extend
tramp-run-real-handler to remove the cygwin-mount entry.
Hm. I've now looked at the cygwin-mount source code, and maybe the
following patch does something useful? Please try it and tell me
what you see.
cvs server: Diffing .
cvs server: Diffing contrib
cvs server: Diffing lisp
Index: lisp/ChangeLog
===================================================================
RCS file: /cvsroot/tramp/tramp/lisp/ChangeLog,v
retrieving revision 2.260
diff -u -r2.260 ChangeLog
--- lisp/ChangeLog 5 Dec 2002 09:21:05 -0000 2.260
+++ lisp/ChangeLog 5 Dec 2002 09:28:27 -0000
@@ -1,5 +1,11 @@
2002-12-05 Kai Großjohann <address@hidden>
+ * tramp.el (tramp-run-real-handler)
+ (tramp-completion-run-real-handler): Disable cygwin-mount, too.
+ All files handled by Tramp are on Unix systems, where
+ cygwin-mount is not useful. (Ie, remote Cygwin systems are not
+ supported.)
+
* tramp-vc.el (tramp-vc-do-command): Ensure that `okstatus' is an
integer before using `<' on it.
(tramp-vc-do-command-new): Pass relative filename as arg to remote
Index: lisp/tramp.el
===================================================================
RCS file: /cvsroot/tramp/tramp/lisp/tramp.el,v
retrieving revision 2.258
diff -u -r2.258 tramp.el
--- lisp/tramp.el 30 Nov 2002 22:33:34 -0000 2.258
+++ lisp/tramp.el 5 Dec 2002 09:28:39 -0000
@@ -3282,10 +3282,13 @@
First arg specifies the OPERATION, second arg is a list of arguments to
pass to the OPERATION."
(let* ((inhibit-file-name-handlers
- (cons 'tramp-file-name-handler
- (cons 'tramp-completion-file-name-handler
- (and (eq inhibit-file-name-operation operation)
- inhibit-file-name-handlers))))
+ `(tramp-file-name-handler
+ tramp-completion-file-name-handler
+ cygwin-mount-name-hook-function
+ cygwin-mount-map-drive-hook-function
+ .
+ ,(and (eq inhibit-file-name-operation operation)
+ inhibit-file-name-handlers)))
(inhibit-file-name-operation operation))
(apply operation args)))
@@ -3298,9 +3301,12 @@
First arg specifies the OPERATION, second arg is a list of arguments to
pass to the OPERATION."
(let* ((inhibit-file-name-handlers
- (cons 'tramp-completion-file-name-handler
- (and (eq inhibit-file-name-operation operation)
- inhibit-file-name-handlers)))
+ `(tramp-completion-file-name-handler
+ cygwin-mount-name-hook-function
+ cygwin-mount-map-drive-hook-function
+ .
+ ,(and (eq inhibit-file-name-operation operation)
+ inhibit-file-name-handlers)))
(inhibit-file-name-operation operation))
(apply operation args)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- compatibility with cygwin-mount,
Matt Swift <=