diff lisp/auto-save.el @ 371:cc15677e0335 r21-2b1

Import from CVS: tag r21-2b1
author cvs
date Mon, 13 Aug 2007 11:03:08 +0200
parents 19dcec799385
children a300bb07d72d
line wrap: on
line diff
--- a/lisp/auto-save.el	Mon Aug 13 11:01:58 2007 +0200
+++ b/lisp/auto-save.el	Mon Aug 13 11:03:08 2007 +0200
@@ -186,8 +186,7 @@
 
 ;;; Preparations to be done at load time
 
-;; Do not call expand-file-name! This is evaluated at dump time now!
-(defvar auto-save-directory-fallback "~/.autosave/"
+(defvar auto-save-directory-fallback (expand-file-name "~/.autosave/")
   ;; not user-variable-p, see above
   "Directory used for local autosaving of remote files if
 both `auto-save-directory' and `efs-auto-save-remotely' are nil.
@@ -200,24 +199,25 @@
 				auto-save-directory-fallback))
   "If non-nil, directory used for hashed autosave filenames.")
 
-(defun auto-save-checked-directory (dir)
-  "Make sure the directory DIR exists and return it expanded if non-nil."
-    (when dir
-      (setq dir (expand-file-name dir))
+(defun auto-save-check-directory (var)
+  (let ((dir (symbol-value var)))
+    (if (null dir)
+	nil
+      ;; Expand and store back into the variable
+      (set var (setq dir (expand-file-name dir)))
       ;; Make sure directory exists
-      (unless (file-directory-p dir)
+      (if (file-directory-p dir)
+	  nil
 	;; Else we create and chmod 0700 the directory
 	(setq dir (directory-file-name dir)) ; some systems need this
 	(make-directory dir)
-	(set-file-modes dir #o700))
-      dir))
+	(set-file-modes dir #o700)))))
 
-;; This make no sense at dump time
-;; (mapc #'auto-save-check-directory
-;     '(auto-save-directory auto-save-directory-fallback))
+(mapc #'auto-save-check-directory
+     '(auto-save-directory auto-save-directory-fallback))
 
-;(and auto-save-hash-p
-;     (auto-save-check-directory 'auto-save-hash-directory))
+(and auto-save-hash-p
+     (auto-save-check-directory 'auto-save-hash-directory))
 
 
 ;;; Computing an autosave name for a file and vice versa
@@ -335,12 +335,8 @@
 	       (string-match "^#%" basename))
 	   nil)
 	  ;; now we know it looks like #...# thus substring is safe to use
-	  ((or (equal savedir
-		      (and auto-save-directory
-			   (expand-file-name auto-save-directory)))
-					; 2nd arg may be nil
-	       (equal savedir
-		      (expand-file-name auto-save-directory-fallback)))
+	  ((or (equal savedir auto-save-directory) ; 2nd arg may be nil
+	       (equal savedir auto-save-directory-fallback))
 	   ;; it is of the `-fixed-directory' type
 	   (auto-save-slashify-name (substring basename 1 -1)))
 	  (t
@@ -362,11 +358,10 @@
 	     auto-save-hash-directory
 	     (> (length base-name) 14))
 	(expand-file-name (auto-save-cyclic-hash-14 filename)
-			  (auto-save-checked-directory auto-save-hash-directory))
+			  auto-save-hash-directory)
       (expand-file-name base-name
-			(auto-save-checked-directory
-			   (or auto-save-directory
-			       auto-save-directory-fallback))))))
+			(or auto-save-directory
+			    auto-save-directory-fallback)))))
 
 (defun auto-save-name-in-same-directory (filename &optional prefix)
   ;; Enclose the non-directory part of FILENAME in `#' to make an auto
@@ -379,8 +374,7 @@
   (let ((directory (file-name-directory filename)))
     (or (null directory)
 	(file-writable-p directory)
-	(setq directory (auto-save-checked-directory
-			 auto-save-directory-fallback)))
+	(setq directory auto-save-directory-fallback))
     (concat directory			; (concat nil) is ""
 	    (or prefix "#")
 	    (file-name-nondirectory filename)
@@ -503,8 +497,7 @@
 	file				; its original file
 	(total 0)			; # of files offered to recover
 	(count 0))			; # of files actually recovered
-    (or (equal (expand-file-name auto-save-directory)
-	       (expand-file-name auto-save-directory-fallback))
+    (or (equal auto-save-directory auto-save-directory-fallback)
 	(setq savefiles
 	      (nconc savefiles
 		     (directory-files auto-save-directory-fallback