aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/net/tramp.el31
2 files changed, 32 insertions, 4 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 30afd64ca6..a5de824ab0 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-17 Michael Albinus <[email protected]>
+
+ * net/tramp.el (tramp-default-method): Before setting to "pscp",
+ check whether package password.el is loaded, or Pageant is running.
+
2006-12-17 Ulf Jasper <[email protected]>
* calendar/icalendar.el (icalendar-version): Increase to "0.14".
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'."