Commit 505edaeb authored by Kai Großjohann's avatar Kai Großjohann
Browse files

(tramp-default-method): New default method "sm"

which I guess to be good for most people.
(tramp-default-method-alist): Use "ftp" method (ie, forwarding to
Ange-FTP) for some user/host combinations.
(tramp-file-name-structure, tramp-file-name-regexp)
(tramp-make-tramp-file-format)
(tramp-make-tramp-file-user-nil-format)
(tramp-multi-file-name-structure)
(tramp-multi-file-name-hop-structure)
(tramp-make-multi-tramp-file-format): New default value which
unifies the filename syntax between Tramp and Ange-FTP.  The new
syntax is "/method:user@host:path".  Note the colon after the
method.
(tramp-handle-file-name-directory): Don't return "/" when
completing a remote root directory (where the filename looks like
"/method:user@host:/").
(tramp-handle-ange-ftp): Deleted.
(tramp-disable-ange-ftp): New function, called at toplevel,
deletes Ange-FTP from file-name-handler-alist.
parent 74a54b04
2002-07-11 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* net/tramp.el (tramp-default-method): New default method "sm"
which I guess to be good for most people.
(tramp-default-method-alist): Use "ftp" method (ie, forwarding to
Ange-FTP) for some user/host combinations.
(tramp-file-name-structure, tramp-file-name-regexp)
(tramp-make-tramp-file-format)
(tramp-make-tramp-file-user-nil-format)
(tramp-multi-file-name-structure)
(tramp-multi-file-name-hop-structure)
(tramp-make-multi-tramp-file-format): New default value which
unifies the filename syntax between Tramp and Ange-FTP. The new
syntax is "/method:user@host:path". Note the colon after the
method.
(tramp-handle-file-name-directory): Don't return "/" when
completing a remote root directory (where the filename looks like
"/method:user@host:/").
(tramp-handle-ange-ftp): Deleted.
(tramp-disable-ange-ftp): New function, called at toplevel,
deletes Ange-FTP from file-name-handler-alist.
2002-07-10 Juanma Barranquero <lektu@terra.es>
* ido.el (ido-enter-single-matching-directory): Delete leftover comment.
......
......@@ -774,14 +774,24 @@ various functions for details."
:group 'tramp
:type '(repeat (list string function string)))
(defcustom tramp-default-method "rcp"
(defcustom tramp-default-method "sm"
;;(if (featurep 'xemacs) "sm" "ftp")
"*Default method to use for transferring files.
See `tramp-methods' for possibilities.
Also see `tramp-default-method-alist'."
Also see `tramp-default-method-alist'.
Emacs uses a unified filename syntax for Tramp and Ange-FTP.
For backward compatibility, the default value of this variable
is \"ftp\" on Emacs. But XEmacs uses a separate filename syntax
for Tramp and EFS, so there the default method is \"sm\"."
:group 'tramp
:type 'string)
(defcustom tramp-default-method-alist nil
(defcustom tramp-default-method-alist
(if (featurep 'xemacs)
nil
'(("\\`ftp\\." "" "ftp")
("" "\\`\\(anonymous\\|ftp\\)\\'" "ftp")))
"*Default method to use for specific user/host pairs.
This is an alist of items (HOST USER METHOD). The first matching item
specifies the method to use for a file name which does not specify a
......@@ -877,12 +887,31 @@ shell from reading its init file."
;; File name format.
(defcustom tramp-file-name-structure
(defconst tramp-file-name-structure-unified
(list (concat "\\`/\\(\\([a-zA-Z0-9]+\\):\\)?" ;method
"\\(\\([^:@/]+\\)@\\)?" ;user
"\\([^:/]+\\):" ;host
"\\(.*\\)\\'") ;path
2 4 5 6)
"Default value for `tramp-file-name-structure' for unified remoting.
On Emacs (not XEmacs), the Tramp and Ange-FTP packages use a unified
filename space. This value is used for this unified namespace.")
(defconst tramp-file-name-structure-separate
(list (concat "\\`/\\[\\(\\([a-zA-Z0-9]+\\)/\\)?" ;method
"\\(\\([-a-zA-Z0-9_#/:]+\\)@\\)?" ;user
"\\([-a-zA-Z0-9_#/:@.]+\\)\\]" ;host
"\\(.*\\)\\'") ;path
2 4 5 6)
"Default value for `tramp-file-name-structure' for separate remoting.
On XEmacs, the Tramp and EFS packages use a separate namespace for
remote filenames. This value is used in that case. It is designed
not to clash with the EFS filename syntax.")
(defcustom tramp-file-name-structure
(if (featurep 'xemacs)
tramp-file-name-structure-separate
tramp-file-name-structure-unified)
"*List of five elements (REGEXP METHOD USER HOST FILE), detailing \
the tramp file name structure.
......@@ -906,7 +935,24 @@ See also `tramp-file-name-regexp' and `tramp-make-tramp-file-format'."
(integer :tag "Paren pair for file name ")))
;;;###autoload
(defcustom tramp-file-name-regexp "\\`/\\[.*\\]"
(defconst tramp-file-name-regexp-unified
"\\`/[^/:]+:"
"Value for `tramp-file-name-regexp' for unified remoting.
Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and
Tramp. See `tramp-file-name-structure-unified' for more explanations.")
;;;###autoload
(defconst tramp-file-name-regexp-separate
"\\`/\\[.*\\]"
"Value for `tramp-file-name-regexp' for separate remoting.
XEmacs uses a separate filename syntax for Tramp and EFS.
See `tramp-file-name-structure-separate' for more explanations.")
;;;###autoload
(defcustom tramp-file-name-regexp
(if (featurep 'xemacs)
tramp-file-name-regexp-separate
tramp-file-name-regexp-unified)
"*Regular expression matching file names handled by tramp.
This regexp should match tramp file names but no other file names.
\(When tramp.el is loaded, this regular expression is prepended to
......@@ -924,7 +970,22 @@ Also see `tramp-file-name-structure' and `tramp-make-tramp-file-format'."
:group 'tramp
:type 'regexp)
(defcustom tramp-make-tramp-file-format "/[%m/%u@%h]%p"
(defconst tramp-make-tramp-file-format-unified
"/%m:%u@%h:%p"
"Value for `tramp-make-tramp-file-format' for unified remoting.
Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and Tramp.
See `tramp-file-name-structure-unified' for more details.")
(defconst tramp-make-tramp-file-format-separate
"/[%m/%u@%h]%p"
"Value for `tramp-make-tramp-file-format' for separate remoting.
XEmacs uses a separate filename syntax for EFS and Tramp.
See `tramp-file-name-structure-separate' for more details.")
(defcustom tramp-make-tramp-file-format
(if (featurep 'xemacs)
tramp-make-tramp-file-format-separate
tramp-make-tramp-file-format-unified)
"*Format string saying how to construct tramp file name.
`%m' is replaced by the method name.
`%u' is replaced by the user name.
......@@ -936,7 +997,22 @@ Also see `tramp-file-name-structure' and `tramp-file-name-regexp'."
:group 'tramp
:type 'string)
(defcustom tramp-make-tramp-file-user-nil-format "/[%m/%h]%p"
(defconst tramp-make-tramp-file-user-nil-format-unified
"/%m:%h:%p"
"Value of `tramp-make-tramp-file-user-nil-format' for unified remoting.
Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and Tramp.
See `tramp-file-name-structure-unified' for details.")
(defconst tramp-make-tramp-file-user-nil-format-separate
"/[%m/%h]%p"
"Value of `tramp-make-tramp-file-user-nil-format' for separate remoting.
XEmacs uses a separate filename syntax for EFS and Tramp.
See `tramp-file-name-structure-separate' for details.")
(defcustom tramp-make-tramp-file-user-nil-format
(if (featurep 'xemacs)
tramp-make-tramp-file-user-nil-format-separate
tramp-make-tramp-file-user-nil-format-unified)
"*Format string saying how to construct tramp file name when the user name is not known.
`%m' is replaced by the method name.
`%h' is replaced by the host name.
......@@ -947,7 +1023,16 @@ Also see `tramp-make-tramp-file-format', `tramp-file-name-structure', and `tramp
:group 'tramp
:type 'string)
(defcustom tramp-multi-file-name-structure
(defconst tramp-multi-file-name-structure-unified
(list (concat "\\`\\([a-zA-Z0-9]+\\)\\)?" ;method
"\\(\\(%s\\)+\\)" ;hops
":\\(.*\\)\\'") ;path
2 3 -1)
"Value for `tramp-multi-file-name-structure' for unified remoting.
Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and Tramp.
See `tramp-file-name-structure-unified' for details.")
(defconst tramp-file-name-structure-separate
(list (concat
;; prefix
"\\`/\\[\\(\\([a-z0-9]+\\)\\)?"
......@@ -958,6 +1043,14 @@ Also see `tramp-make-tramp-file-format', `tramp-file-name-structure', and `tramp
2 ;number of pair to match method
3 ;number of pair to match hops
-1) ;number of pair to match path
"Value of `tramp-multi-file-name-structure' for separate remoting.
XEmacs uses a separate filename syntax for EFS and Tramp.
See `tramp-file-name-structure-separate' for details.")
(defcustom tramp-multi-file-name-structure
(if (featurep 'xemacs)
tramp-multi-file-name-structure-separate
tramp-multi-file-name-structure-unified)
"*Describes the file name structure of `multi' files.
Multi files allow you to contact a remote host in several hops.
This is a list of four elements (REGEXP METHOD HOP PATH).
......@@ -985,11 +1078,28 @@ string, but I haven't actually tried what happens if it doesn't..."
(integer :tag "Paren pair for hops")
(integer :tag "Paren pair to match path")))
(defcustom tramp-multi-file-name-hop-structure
(defconst tramp-multi-file-name-hop-structure-unified
(list (concat ":\\([a-zA-z0-9_]+\\):" ;hop method
"\\([^@:/]+\\)@" ;user
"\\([^:/]+\\)") ;host
1 2 3)
"Value of `tramp-multi-file-name-hop-structure' for unified remoting.
Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and Tramp.
See `tramp-file-name-structure-unified' for details.")
(defconst tramp-multi-file-name-hop-structure-separate
(list (concat "/\\([a-z0-9_]+\\):" ;hop method
"\\([a-z0-9_]+\\)@" ;user
"\\([a-z0-9.-]+\\)") ;host
1 2 3)
"Value of `tramp-multi-file-name-hop-structure' for separate remoting.
XEmacs uses a separate filename syntax for EFS and Tramp.
See `tramp-file-name-structure-separate' for details.")
(defcustom tramp-multi-file-name-hop-structure
(if (featurep 'xemacs)
tramp-multi-file-name-hop-structure-separate
tramp-multi-file-name-hop-structure-unified)
"*Describes the structure of a hop in multi files.
This is a list of four elements (REGEXP METHOD USER HOST). First
element REGEXP is used to match against the hop. Pair number METHOD
......@@ -1003,8 +1113,22 @@ This regular expression should match exactly all of one hop."
(integer :tag "Paren pair for user name")
(integer :tag "Paren pair for host name")))
(defcustom tramp-make-multi-tramp-file-format
(defconst tramp-make-multi-tramp-file-format-unified
(list "/%m" ":%m:%u@%h" ":%p")
"Value of `tramp-make-multi-tramp-file-format' for unified remoting.
Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and Tramp.
See `tramp-file-name-structure-unified' for details.")
(defconst tramp-make-multi-tramp-file-format-separate
(list "/[%m" "/%m:%u@%h" "]%p")
"Value of `tramp-make-multi-tramp-file-format' for separate remoting.
XEmacs uses a separate filename syntax for EFS and Tramp.
See `tramp-file-name-structure-separate' for details.")
(defcustom tramp-make-multi-tramp-file-format
(if (featurep 'xemacs)
tramp-make-multi-tramp-file-format-separate
tramp-make-multi-tramp-file-format-unified)
"*Describes how to construct a `multi' file name.
This is a list of three elements PREFIX, HOP and PATH.
......@@ -1469,7 +1593,14 @@ The LINKNAME argument should look like \"/path/to/target\" or
(with-parsed-tramp-file-name file nil
(when (tramp-ange-ftp-file-name-p multi-method method)
(tramp-invoke-ange-ftp 'file-name-directory file))
(if (or (string= path "") (string= path "/"))
;; For the following condition, two possibilities should be tried:
;; (1) (string= path "")
;; (2) (or (string= path "") (string= path "/"))
;; The second variant fails when completing a "/" directory on
;; the remote host, that is a filename which looks like
;; "/user@host:/". But maybe wildcards fail with the first variant.
;; We should do some investigation.
(if (string= path "")
;; For a filename like "/[foo]", we return "/". The `else'
;; case would return "/[foo]" unchanged. But if we do that,
;; then `file-expand-wildcards' ceases to work. It's not
......@@ -2971,42 +3102,31 @@ Falls back to normal file name handler if no tramp file name handler exists."
(add-to-list 'file-name-handler-alist
(cons tramp-file-name-regexp 'tramp-file-name-handler))
;;;###autoload
(defun tramp-handle-ange-ftp ()
"Turn Ange-FTP off and an Ange-FTP-like filename format.
Requests suitable for Ange-FTP will be forwarded to Ange-FTP.
Also see the variables `tramp-ftp-method', `tramp-default-method',
and `tramp-default-method-alist'."
(interactive)
;; To handle EFS, the following functions need to be dealt with:
;;
;; * dired-before-readin-hook contains efs-dired-before-readin
;; * file-name-handler-alist contains efs-file-handler-function
;; and efs-root-handler-function and efs-sifn-handler-function
;; * find-file-hooks contains efs-set-buffer-mode
;;
;; But it won't happen for EFS since the XEmacs maintainers
;; don't want to use a unified filename syntax.
(defun tramp-disable-ange-ftp ()
"Turn Ange-FTP off.
This is useful for unified remoting. See
`tramp-file-name-structure-unified' and
`tramp-file-name-structure-separate' for details. Requests suitable
for Ange-FTP will be forwarded to Ange-FTP. Also see the variables
`tramp-ftp-method', `tramp-default-method', and
`tramp-default-method-alist'.
This function is not needed in Emacsen which include Tramp, but is
present for backward compatibility."
(let ((a1 (rassq 'ange-ftp-hook-function file-name-handler-alist))
(a2 (rassq 'ange-ftp-completion-hook-function file-name-handler-alist))
(a3 (rassq 'tramp-file-name-handler file-name-handler-alist)))
(a2 (rassq 'ange-ftp-completion-hook-function file-name-handler-alist)))
(setq file-name-handler-alist
(delete a1 (delete a2 (delete a3 file-name-handler-alist)))))
(setq tramp-file-name-structure
(list (concat "\\`/\\(\\([a-zA-Z0-9]+\\)#\\)?" ;method
"\\(\\([^:@/]+\\)@\\)?" ;user
"\\([^:/]+\\):" ;host
"\\(.*\\)\\'") ;path
2 4 5 6)
tramp-file-name-regexp "\\`/[^/:]+:"
tramp-make-tramp-file-format "/%m#%u@%h:%p"
tramp-make-tramp-file-user-nil-format "/%m#%h:%p"
tramp-multi-file-name-structure
(list (concat "\\`\\([a-zA-Z0-9]+\\)\\)?" ;method
"\\(\\(%s\\)+\\)" ;hops
":\\(.*\\)\\'") ;path
2 3 -1)
tramp-multi-file-name-hop-structure
(list (concat ":\\([a-zA-z0-9_]+\\):" ;hop method
"\\([^@:/]+\\)@" ;user
"\\([^:/]+\\)") ;host
1 2 3)
tramp-make-multi-tramp-file-format
(list "/%m" ":%m:%u@%h" ":%p"))
(add-to-list 'file-name-handler-alist
(cons tramp-file-name-regexp 'tramp-file-name-handler))
(tramp-repair-jka-compr))
(delete a1 (delete a2 file-name-handler-alist)))))
(tramp-disable-ange-ftp)
(defun tramp-repair-jka-compr ()
"If jka-compr is already loaded, move it to the front of
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment