diff lisp/files.el @ 7944:a114bbe9a63c

(make-auto-save-file-name): Convert slashes to \! and double the backslashes.
author Richard M. Stallman <rms@gnu.org>
date Fri, 17 Jun 1994 21:42:34 +0000
parents fac7ff0a7aeb
children fde315722669
line wrap: on
line diff
--- a/lisp/files.el	Fri Jun 17 20:35:16 1994 +0000
+++ b/lisp/files.el	Fri Jun 17 21:42:34 1994 +0000
@@ -1950,14 +1950,27 @@
 	      "#"
 	      (file-name-nondirectory buffer-file-name)
 	      "#")
-    ;; For non-file bfr, use bfr name and Emacs pid.
-    ;; Don't allow slashes, though; auto-save would try to interpret it
-    ;; as a pathname, and it might not exist.
+
+    ;; Deal with buffers that don't have any associated files.  (Mail
+    ;; mode tends to create a good number of these.)
+
     (let ((buffer-name (buffer-name))
-	  (save-match-data (match-data)))
-      (while (string-match "/" buffer-name)
-	(aset buffer-name (match-beginning 0) ?-))
-      (store-match-data save-match-data)
+	  (limit 0))
+      ;; Use technique from Sebastian Kremer's auto-save
+      ;; package to turn slashes into \\!.  This ensures that
+      ;; the auto-save buffer name is unique.
+
+      (while (string-match "[/\\]" buffer-name limit)
+	(setq buffer-name (concat (substring buffer-name 0 (match-beginning 0))
+			(if (string= (substring buffer-name
+						(match-beginning 0)
+						(match-end 0))
+				     "/")
+			    "\\!"
+			  "\\\\")
+			(substring buffer-name (match-end 0))))
+	(setq limit (1+ (match-end 0))))
+
       (expand-file-name (format "#%s#%s#" buffer-name (make-temp-name ""))))))
 
 (defun auto-save-file-name-p (filename)