emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r105303: * net/tramp.el (tramp-file-n


From: Michael Albinus
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r105303: * net/tramp.el (tramp-file-name-handler): Avoid recursive
Date: Fri, 22 Jul 2011 13:04:55 +0200
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 105303
committer: Michael Albinus <address@hidden>
branch nick: trunk
timestamp: Fri 2011-07-22 13:04:55 +0200
message:
  * net/tramp.el (tramp-file-name-handler): Avoid recursive
  loading.  (Bug#9114)
modified:
  lisp/ChangeLog
  lisp/net/tramp.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2011-07-21 08:27:44 +0000
+++ b/lisp/ChangeLog    2011-07-22 11:04:55 +0000
@@ -1,3 +1,8 @@
+2011-07-22  Michael Albinus  <address@hidden>
+
+       * net/tramp.el (tramp-file-name-handler): Avoid recursive
+       loading.  (Bug#9114)
+
 2011-07-21  Martin Rudalics  <address@hidden>
 
        * window.el (display-buffer-pop-up-window)

=== modified file 'lisp/net/tramp.el'
--- a/lisp/net/tramp.el 2011-07-01 09:14:31 +0000
+++ b/lisp/net/tramp.el 2011-07-22 11:04:55 +0000
@@ -1876,7 +1876,17 @@
            ;; Call the backend function.
            (if foreign
                (condition-case err
-                   (apply foreign operation args)
+                   (let ((sf (symbol-function foreign)))
+                     ;; Some packages set the default directory to a
+                     ;; remote path, before respective Tramp packages
+                     ;; are already loaded.  This results in
+                     ;; recursive loading.  Therefore, we load the
+                     ;; Tramp packages locally.
+                     (when (and (listp sf) (eq (car sf) 'autoload))
+                       (let ((default-directory
+                               (tramp-compat-temporary-file-directory)))
+                         (load (cadr sf) 'noerror)))
+                     (apply foreign operation args))
 
                  ;; Trace that somebody has interrupted the operation.
                  (quit


reply via email to

[Prev in Thread] Current Thread [Next in Thread]