summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Diekhans <markd@soe.ucsc.edu>2011-01-14 21:32:19 -0500
committerChong Yidong <cyd@stupidchicken.com>2011-01-14 21:32:19 -0500
commitb024d9f02d2758815069b2a0df3af72fcf0ee220 (patch)
treec804be069540cb3f8562a4d50c07ce6e0e8d7e6d
parent66399c0a66e87c20edad6a7eb2474981d9bc7e4e (diff)
downloademacs-b024d9f02d2758815069b2a0df3af72fcf0ee220.tar.gz
Make last-resort backup file in .emacs.d (Bug#6953).
* lisp/files.el (backup-buffer): Make last-resort backup file in .emacs.d. * lisp/subr.el (locate-user-emacs-file): If .emacs.d does not exist, make it with permission 700. * doc/emacs/files.texi (Backup Names): Document the new location of the last-resort backup file.
-rw-r--r--doc/emacs/ChangeLog5
-rw-r--r--doc/emacs/files.texi8
-rw-r--r--etc/NEWS4
-rw-r--r--lisp/ChangeLog8
-rw-r--r--lisp/files.el7
-rw-r--r--lisp/subr.el11
6 files changed, 32 insertions, 11 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 4825f08979f..d1e5beb7384 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,8 @@
+2011-01-15 Chong Yidong <cyd@stupidchicken.com>
+
+ * files.texi (Backup Names): Document the new location of the
+ last-resort backup file.
+
2011-01-08 Chong Yidong <cyd@stupidchicken.com>
* files.texi (File Aliases): Move directory-abbrev-alist doc from Lisp
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index 530c2bb94f7..b16549450e4 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -566,10 +566,10 @@ another from the newly saved contents if you save again.
appending @samp{~} to the file name being edited; thus, the backup
file for @file{eval.c} would be @file{eval.c~}.
- If access control stops Emacs from writing backup files under the usual
-names, it writes the backup file as @file{%backup%~} in your home
-directory. Only one such file can exist, so only the most recently
-made such backup is available.
+ If access control stops Emacs from writing backup files under the
+usual names, it writes the backup file as @file{~/.emacs.d/%backup%~}.
+Only one such file can exist, so only the most recently made such
+backup is available.
Emacs can also make @dfn{numbered backup files}. Numbered backup
file names contain @samp{.~}, the number, and another @samp{~} after
diff --git a/etc/NEWS b/etc/NEWS
index 8a673d19443..34e3adea481 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -26,6 +26,10 @@ used on x86-64 and s390x GNU/Linux architectures.
* Changes in Emacs 23.3
++++
+** The last-resort backup file `%backup%~' is now written to
+`user-emacs-directory', instead of the user's home directory.
+
* Editing Changes in Emacs 23.3
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 0f6138bf698..0ff810a1230 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,11 @@
+2011-01-15 Mark Diekhans <markd@soe.ucsc.edu>
+
+ * files.el (backup-buffer): Make last-resort backup file in
+ .emacs.d (Bug#6953).
+
+ * subr.el (locate-user-emacs-file): If .emacs.d does not exist,
+ make it with permission 700.
+
2011-01-14 Kenichi Handa <handa@m17n.org>
* mail/rmailmm.el (rmail-mime-insert-header): Set
diff --git a/lisp/files.el b/lisp/files.el
index ab027b507f6..92029b470ff 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3683,10 +3683,9 @@ BACKUPNAME is the backup file name, which is the old file renamed."
(rename-file real-file-name backupname t)
(setq setmodes (cons modes backupname)))
(file-error
- ;; If trouble writing the backup, write it in ~.
- (setq backupname (expand-file-name
- (convert-standard-filename
- "~/%backup%~")))
+ ;; If trouble writing the backup, write it in
+ ;; .emacs.d/%backup%.
+ (setq backupname (locate-user-emacs-file "%backup%~"))
(message "Cannot write backup file; backing up in %s"
backupname)
(sleep-for 1)
diff --git a/lisp/subr.el b/lisp/subr.el
index 7ddabbc0e90..2a0dee69338 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2340,11 +2340,16 @@ directory if it does not exist."
;; unless we're in batch mode or dumping Emacs
(or noninteractive
purify-flag
- (file-accessible-directory-p (directory-file-name user-emacs-directory))
- (make-directory user-emacs-directory))
+ (file-accessible-directory-p
+ (directory-file-name user-emacs-directory))
+ (let ((umask (default-file-modes)))
+ (unwind-protect
+ (progn
+ (set-default-file-modes ?\700)
+ (make-directory user-emacs-directory))
+ (set-default-file-modes umask))))
(abbreviate-file-name
(expand-file-name new-name user-emacs-directory))))))
-
;;;; Misc. useful functions.