]> git.eshelyaron.com Git - emacs.git/commitdiff
* net/tramp.el (tramp-default-method): Before setting to "pscp",
authorMichael Albinus <michael.albinus@gmx.de>
Sun, 17 Dec 2006 12:58:04 +0000 (12:58 +0000)
committerMichael Albinus <michael.albinus@gmx.de>
Sun, 17 Dec 2006 12:58:04 +0000 (12:58 +0000)
check whether package password.el is loaded, or Pageant is running.

lisp/ChangeLog
lisp/net/tramp.el

index 30afd64ca659f4c41545c87625f2aa5574a91cab..a5de824ab0672ab2fc0677d4b38684d086a14876 100644 (file)
@@ -1,3 +1,8 @@
+2006-12-17  Michael Albinus  <michael.albinus@gmx.de>
+
+       * 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  <ulf.jasper@web.de>
 
        * calendar/icalendar.el (icalendar-version): Increase to "0.14".
index a45e1a22ad5f72692067ed3b9b974cc1050de637..b2e4ec814fdbdb62ef8647b44e1659cde68a8d10 100644 (file)
@@ -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'."