changeset 80670:42bdac53d197

(custom-save-all): Avoid destrying symlink if already visiting the custom file.
author Chong Yidong <cyd@stupidchicken.com>
date Sat, 02 Aug 2008 21:10:05 +0000
parents af4278dace39
children 6fb9c9529103
files lisp/cus-edit.el
diffstat 1 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/cus-edit.el	Sat Aug 02 21:09:29 2008 +0000
+++ b/lisp/cus-edit.el	Sat Aug 02 21:10:05 2008 +0000
@@ -4207,9 +4207,17 @@
 			     (recentf-expand-file-name (custom-file)))
 			    "\\'")
 		    recentf-exclude)))
-	 (old-buffer (find-buffer-visiting filename)))
+	 (old-buffer (find-buffer-visiting filename))
+	 old-buffer-name)
     (with-current-buffer (let ((find-file-visit-truename t))
 			   (or old-buffer (find-file-noselect filename)))
+      ;; We'll save using file-precious-flag, so avoid destroying
+      ;; symlinks.  (If we're not already visiting the buffer, this is
+      ;; handled by find-file-visit-truename, above.)
+      (when old-buffer
+	(setq old-buffer-name (buffer-file-name))
+	(set-visited-file-name (file-chase-links filename)))
+
       (unless (eq major-mode 'emacs-lisp-mode)
 	(emacs-lisp-mode))
       (let ((inhibit-read-only t))
@@ -4217,7 +4225,10 @@
 	(custom-save-faces))
       (let ((file-precious-flag t))
 	(save-buffer))
-      (unless old-buffer
+      (if old-buffer
+	  (progn
+	    (set-visited-file-name old-buffer-name)
+	    (set-buffer-modified-p nil))
 	(kill-buffer (current-buffer))))))
 
 ;;;###autoload