From 299b190a6b54ae6df5a5d38205c3137b6578689d Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Tue, 17 Jan 2017 17:35:23 +0100 Subject: [PATCH] Fix auto-save-file-name problem in Tramp on MS Windows * lisp/files.el (make-auto-save-file-name): Use `file-remote-p' rather than an ange-ftp regexp. * lisp/net/tramp.el (tramp-handle-make-auto-save-file-name): Fix a problem when running on MS Windows. * test/lisp/net/tramp-tests.el (tramp-test31-make-auto-save-file-name): Adapt test. --- lisp/files.el | 8 ++++---- lisp/net/tramp.el | 6 +++++- test/lisp/net/tramp-tests.el | 16 ++++++++++------ 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/lisp/files.el b/lisp/files.el index b57e35b9a0a..f60282b775a 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -6074,8 +6074,8 @@ See also `auto-save-file-name-p'." ;; Make sure auto-save file names don't contain characters ;; invalid for the underlying filesystem. (if (and (memq system-type '(ms-dos windows-nt cygwin)) - ;; Don't modify remote (ange-ftp) filenames - (not (string-match "^/\\w+@[-A-Za-z0-9._]+:" result))) + ;; Don't modify remote filenames + (not (file-remote-p result))) (convert-standard-filename result) result)))) @@ -6112,8 +6112,8 @@ See also `auto-save-file-name-p'." ((file-writable-p "/var/tmp/") "/var/tmp/") ("~/"))))) (if (and (memq system-type '(ms-dos windows-nt cygwin)) - ;; Don't modify remote (ange-ftp) filenames - (not (string-match "^/\\w+@[-A-Za-z0-9._]+:" fname))) + ;; Don't modify remote filenames + (not (file-remote-p fname))) ;; The call to convert-standard-filename is in case ;; buffer-name includes characters not allowed by the ;; DOS/Windows filesystems. make-temp-file writes to the diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 3697d50429d..fc7fdd30850 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -4063,7 +4063,11 @@ this file, if that variable is non-nil." (file-exists-p tramp-auto-save-directory)) (make-directory tramp-auto-save-directory t)) - (let ((system-type 'not-windows) + (let ((system-type + (if (and (stringp tramp-auto-save-directory) + (file-remote-p tramp-auto-save-directory)) + 'not-windows + system-type)) (auto-save-file-name-transforms (if (null tramp-auto-save-directory) auto-save-file-name-transforms)) diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 02e5d18b7fe..0c3068aeb09 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -1991,12 +1991,16 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (string-equal (make-auto-save-file-name) ;; This is taken from original `make-auto-save-file-name'. - (expand-file-name - (format - "#%s#" - (subst-char-in-string - ?/ ?! (replace-regexp-in-string "!" "!!" tmp-name1))) - temporary-file-directory))))) + ;; We call `convert-standard-filename', because on + ;; MS Windows the (local) colons must be replaced by + ;; exclamation marks. + (convert-standard-filename + (expand-file-name + (format + "#%s#" + (subst-char-in-string + ?/ ?! (replace-regexp-in-string "!" "!!" tmp-name1))) + temporary-file-directory)))))) ;; No mapping. (let (tramp-auto-save-directory auto-save-file-name-transforms) -- 2.39.5