]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix auto-save-file-name problem in Tramp on MS Windows
authorMichael Albinus <michael.albinus@gmx.de>
Tue, 17 Jan 2017 16:35:23 +0000 (17:35 +0100)
committerMichael Albinus <michael.albinus@gmx.de>
Tue, 17 Jan 2017 16:35:23 +0000 (17:35 +0100)
* 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
lisp/net/tramp.el
test/lisp/net/tramp-tests.el

index b57e35b9a0a7dda6e5422a76aaf49a24a85f6225..f60282b775a406380d294060b05f8b64ec9830a0 100644 (file)
@@ -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
index 3697d50429d7cdb82f5c46b0f3970eec1dc59852..fc7fdd30850e579dd4f7b7a65e43805a496eaef0 100644 (file)
@@ -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))
index 02e5d18b7feec2d289c3a0129ca18f0c48a73688..0c3068aeb093214458a633aa2194125fb8645a0f 100644 (file)
@@ -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)