From 9ade339bd7af46c6f986dd01c8d75662c584d02b Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 3 May 2025 15:00:18 +0200 Subject: [PATCH] Fix quoted local file name parts in Tramp * lisp/net/tramp.el (tramp-handle-directory-file-name): * lisp/net/tramp-integration.el (tramp-rfn-eshadow-update-overlay): Handle quoted local file name part. (cherry picked from commit 28a276efe8744227e15a8077f6333974eda157bb) --- lisp/net/tramp-integration.el | 8 +++++--- lisp/net/tramp.el | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lisp/net/tramp-integration.el b/lisp/net/tramp-integration.el index a3f619c5925..8569b1f30f4 100644 --- a/lisp/net/tramp-integration.el +++ b/lisp/net/tramp-integration.el @@ -58,8 +58,9 @@ ;;; Fontification of `read-file-name': -(defvar tramp-rfn-eshadow-overlay) -(make-variable-buffer-local 'tramp-rfn-eshadow-overlay) +;; An overlay covering the shadowed part of the filename (local to the +;; minibuffer). +(defvar-local tramp-rfn-eshadow-overlay nil) (defun tramp-rfn-eshadow-setup-minibuffer () "Set up a minibuffer for `file-name-shadow-mode'. @@ -103,7 +104,8 @@ been set up by `rfn-eshadow-setup-minibuffer'." (minibuffer-prompt-end))) ;; We do not want to send any remote command. (non-essential t)) - (when (tramp-tramp-file-p (buffer-substring end (point-max))) + (when (and (tramp-tramp-file-p (buffer-substring end (point-max))) + (not (file-name-quoted-p (buffer-substring end (point-max))))) (save-excursion (save-restriction (narrow-to-region diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 920a76ef8f2..58d6805f1b1 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -4109,6 +4109,7 @@ Let-bind it when necessary.") ;; Otherwise, remove any trailing slash from localname component. ;; Method, host, etc, are unchanged. (while (with-parsed-tramp-file-name directory nil + (setq localname (file-name-unquote localname)) (and (length> localname 0) (eq (aref localname (1- (length localname))) ?/) (not (string= localname "/")))) @@ -4197,8 +4198,8 @@ Let-bind it when necessary.") (eq (file-attribute-type (file-attributes (file-truename filename))) t))) (defun tramp-handle-file-equal-p (filename1 filename2) - "Like `file-equalp-p' for Tramp files." - ;; Native `file-equalp-p' calls `file-truename', which requires a + "Like `file-equal-p' for Tramp files." + ;; Native `file-equal-p' calls `file-truename', which requires a ;; remote connection. This can be avoided, if FILENAME1 and ;; FILENAME2 are not located on the same remote host. (when (tramp-equal-remote -- 2.39.5