aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/net/tramp.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/net/tramp.el')
-rw-r--r--lisp/net/tramp.el25
1 files changed, 15 insertions, 10 deletions
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 48dcd5edd11..4b5bd472632 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -2133,9 +2133,13 @@ preventing reentrant calls of Tramp.")
2133Together with `tramp-locked', this implements a locking mechanism 2133Together with `tramp-locked', this implements a locking mechanism
2134preventing reentrant calls of Tramp.") 2134preventing reentrant calls of Tramp.")
2135 2135
2136;; Avoid recursive loading of tramp.el. 2136;; Avoid recursive loading of tramp.el. If `non-essential' is
2137;; non-nil, we must load tramp.el, in order to get the real definition
2138;; of `tramp-completion-file-name-handler'.
2137;;;###autoload(defun tramp-completion-file-name-handler (operation &rest args) 2139;;;###autoload(defun tramp-completion-file-name-handler (operation &rest args)
2138;;;###autoload (tramp-completion-run-real-handler operation args)) 2140;;;###autoload (if (and (boundp 'non-essential) (symbol-value 'non-essential))
2141;;;###autoload (apply 'tramp-autoload-file-name-handler operation args)
2142;;;###autoload (tramp-completion-run-real-handler operation args)))
2139 2143
2140(defun tramp-completion-file-name-handler (operation &rest args) 2144(defun tramp-completion-file-name-handler (operation &rest args)
2141 "Invoke Tramp file name completion handler. 2145 "Invoke Tramp file name completion handler.
@@ -2165,9 +2169,11 @@ Falls back to normal file name handler if no Tramp file name handler exists."
2165(progn (defun tramp-autoload-file-name-handler (operation &rest args) 2169(progn (defun tramp-autoload-file-name-handler (operation &rest args)
2166 "Load Tramp file name handler, and perform OPERATION." 2170 "Load Tramp file name handler, and perform OPERATION."
2167 ;; Avoid recursive loading of tramp.el. 2171 ;; Avoid recursive loading of tramp.el.
2168 (let ((default-directory temporary-file-directory)) 2172 (if (let ((default-directory temporary-file-directory))
2169 (load "tramp" nil t)) 2173 (and (null load-in-progress) (load "tramp" 'noerror 'nomessage)))
2170 (apply operation args))) 2174 (apply operation args)
2175 ;; tramp.el not available for loading, fall back.
2176 (tramp-completion-run-real-handler operation args))))
2171 2177
2172;; `tramp-autoload-file-name-handler' must be registered before 2178;; `tramp-autoload-file-name-handler' must be registered before
2173;; evaluation of site-start and init files, because there might exist 2179;; evaluation of site-start and init files, because there might exist
@@ -2307,11 +2313,10 @@ not in completion mode."
2307 (progn 2313 (progn
2308 ;; If DIR is not given, use `default-directory' or "/". 2314 ;; If DIR is not given, use `default-directory' or "/".
2309 (setq dir (or dir default-directory "/")) 2315 (setq dir (or dir default-directory "/"))
2310 ;; Unless NAME is absolute, concat DIR and NAME. 2316 (cond
2311 (unless (file-name-absolute-p name) 2317 ((file-name-absolute-p name) name)
2312 (setq name (concat (file-name-as-directory dir) name))) 2318 ((zerop (length name)) dir)
2313 ;; Return NAME. 2319 (t (concat (file-name-as-directory dir) name))))
2314 name)
2315 2320
2316 (tramp-completion-run-real-handler 2321 (tramp-completion-run-real-handler
2317 'expand-file-name (list name dir)))) 2322 'expand-file-name (list name dir))))