aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/net
diff options
context:
space:
mode:
authorMichael Albinus <[email protected]>2006-12-17 12:58:04 +0000
committerMichael Albinus <[email protected]>2006-12-17 12:58:04 +0000
commit210a7c2c92df94a193ae3143a4c39ee65923dd5f (patch)
tree195a106279b600304563cc0ad7f8c65ddec34941 /lisp/net
parentf6e22881e2e567fea51226a35d4e195fcad0381e (diff)
* net/tramp.el (tramp-default-method): Before setting to "pscp",
check whether package password.el is loaded, or Pageant is running.
Diffstat (limited to 'lisp/net')
-rw-r--r--lisp/net/tramp.el31
1 files changed, 27 insertions, 4 deletions
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index a45e1a22ad..b2e4ec814f 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -684,10 +684,33 @@ various functions for details."
:type '(repeat (list string function string)))
(defcustom tramp-default-method
- (if (and (fboundp 'executable-find)
- (executable-find "pscp"))
- "pscp"
- "scp")
+ (or
+ ;; An external copy method seems to be preferred, because it is
+ ;; much more performant for large files, and it hasn't too serious
+ ;; delays for small files. But it must be ensured that there
+ ;; aren't permanent password queries. Either the copy method shall
+ ;; reuse other channels (ControlMaster of OpenSSH does it), a
+ ;; password agent like "ssh-agent" or "Pageant" shall run, or the
+ ;; optional password.el package shall be active for password caching.
+ (and (fboundp 'executable-find)
+ ;; Check whether PuTTY is installed.
+ (executable-find "pscp")
+ (if (or
+ ;; password.el is loaded.
+ (fboundp 'password-read)
+ ;; Pageant is running.
+ (and (fboundp 'w32-window-exists-p)
+ (funcall (symbol-function 'w32-window-exists-p)
+ "Pageant" "Pageant")))
+ ;; We know that the password will not be retrieved again.
+ "pscp"
+ ;; When "pscp" exists, there is also "plink".
+ "plink"))
+ ;; Under UNIX, ControlMaster is activated. This does not work
+ ;; under Cygwin, but ssh-agent must be enabled then anyway due to
+ ;; the pseudo-tty problem of Cygwin's OpenSSH implementation. So
+ ;; it doesn't hurt to use "scp".
+ "scp")
"*Default method to use for transferring files.
See `tramp-methods' for possibilities.
Also see `tramp-default-method-alist'."