]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't attempt to connect to a remote server during 'abbreviate-file-name'
authorJim Porter <jporterbugs@gmail.com>
Mon, 14 Feb 2022 21:16:05 +0000 (13:16 -0800)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 15 Feb 2022 13:10:21 +0000 (08:10 -0500)
* lisp/net/tramp.el (tramp-handle-abbreviate-file-name): Only use the
"home-directory" when a connection has been established.

lisp/net/tramp.el

index 32712efb3ea9c147f02504806fae66108dd8a2a9..3c06ad1630ada24a289afd77bc99a3d1ed5e4946 100644 (file)
@@ -3343,16 +3343,24 @@ User is always nil."
   (let* ((case-fold-search (file-name-case-insensitive-p filename))
         (vec (tramp-dissect-file-name filename))
          (home-dir
-          (with-tramp-connection-property vec "home-directory"
-            (tramp-compat-funcall
-            'directory-abbrev-apply
-            (expand-file-name (tramp-make-tramp-file-name vec "~"))))))
+          (if (let ((non-essential t)) (tramp-connectable-p vec))
+              ;; If a connection has already been established, make
+              ;; sure the "home-directory" connection property is
+              ;; properly set.
+              (with-tramp-connection-property vec "home-directory"
+                (tramp-compat-funcall
+                'directory-abbrev-apply
+                (expand-file-name (tramp-make-tramp-file-name vec "~"))))
+            ;; Otherwise, just use the cached value.
+            (tramp-get-connection-property vec "home-directory" nil))))
     ;; If any elt of `directory-abbrev-alist' matches this name,
     ;; abbreviate accordingly.
     (setq filename (tramp-compat-funcall 'directory-abbrev-apply filename))
     ;; Abbreviate home directory.
-    (if (string-match
-        (tramp-compat-funcall 'directory-abbrev-make-regexp home-dir) filename)
+    (if (and home-dir
+             (string-match
+             (tramp-compat-funcall 'directory-abbrev-make-regexp home-dir)
+              filename))
         (tramp-make-tramp-file-name
         vec (concat "~" (substring filename (match-beginning 1))))
       (tramp-make-tramp-file-name (tramp-dissect-file-name filename)))))