Mercurial > hg > xemacs-beta
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