diff options
author | Michael Albinus <michael.albinus@gmx.de> | 2018-07-31 06:50:30 +0200 |
---|---|---|
committer | Michael Albinus <michael.albinus@gmx.de> | 2018-07-31 06:50:30 +0200 |
commit | 82d6416a28dc5b4ab65b8081f035679bec4e3604 (patch) | |
tree | 82452a2104b5e153afdd0f876844ddba64bba71e /lisp | |
parent | 63ef79329935b790b9c8107125bce66e1f272c2e (diff) | |
download | emacs-82d6416a28dc5b4ab65b8081f035679bec4e3604.tar.gz |
Fix Bug#32304
* lisp/net/tramp.el (tramp-handle-substitute-in-file-name):
Handle special cas on Cygwin and MS-Windows. (Bug#32304)
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/net/tramp.el | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index d56b09a604d..1af2defd586 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -3567,16 +3567,20 @@ support symbolic links." ;; First, we must replace environment variables. (setq filename (tramp-replace-environment-variables filename)) (with-parsed-tramp-file-name filename nil - ;; We do not want to replace environment variables, again. + ;; We do not want to replace environment variables, again. "//" + ;; has a special meaning at the beginning of a file name on + ;; Cygwin and MS-Windows, we must remove it. (let (process-environment) ;; Ignore in LOCALNAME everything before "//" or "/~". (when (stringp localname) (if (string-match "//\\(/\\|~\\)" localname) - (setq filename (substitute-in-file-name localname)) + (setq filename + (replace-regexp-in-string + "\\`/+" "/" (substitute-in-file-name localname))) (setq filename (concat (file-remote-p filename) - (tramp-run-real-handler - 'substitute-in-file-name (list localname))))))) + (replace-regexp-in-string + "\\`/+" "/" (substitute-in-file-name localname))))))) ;; "/m:h:~" does not work for completion. We use "/m:h:~/". (if (and (stringp localname) (string-equal "~" localname)) (concat filename "/") |