aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChong Yidong2008-08-02 21:10:05 +0000
committerChong Yidong2008-08-02 21:10:05 +0000
commit436e3ef5844956a2af52acd66d1da3dda141beeb (patch)
tree487d01b9fd9cfbc3337efd5a6974c7602ef8f9f8
parent07f540d6eda23aae8d4189b82b15fa2e4cbd59c8 (diff)
downloademacs-436e3ef5844956a2af52acd66d1da3dda141beeb.tar.gz
emacs-436e3ef5844956a2af52acd66d1da3dda141beeb.zip
(custom-save-all): Avoid destrying symlink if already visiting the
custom file.
-rw-r--r--lisp/cus-edit.el15
1 files changed, 13 insertions, 2 deletions
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 0446102eb09..5201256bcab 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -4207,9 +4207,17 @@ if only the first line of the docstring is shown."))
4207 (recentf-expand-file-name (custom-file))) 4207 (recentf-expand-file-name (custom-file)))
4208 "\\'") 4208 "\\'")
4209 recentf-exclude))) 4209 recentf-exclude)))
4210 (old-buffer (find-buffer-visiting filename))) 4210 (old-buffer (find-buffer-visiting filename))
4211 old-buffer-name)
4211 (with-current-buffer (let ((find-file-visit-truename t)) 4212 (with-current-buffer (let ((find-file-visit-truename t))
4212 (or old-buffer (find-file-noselect filename))) 4213 (or old-buffer (find-file-noselect filename)))
4214 ;; We'll save using file-precious-flag, so avoid destroying
4215 ;; symlinks. (If we're not already visiting the buffer, this is
4216 ;; handled by find-file-visit-truename, above.)
4217 (when old-buffer
4218 (setq old-buffer-name (buffer-file-name))
4219 (set-visited-file-name (file-chase-links filename)))
4220
4213 (unless (eq major-mode 'emacs-lisp-mode) 4221 (unless (eq major-mode 'emacs-lisp-mode)
4214 (emacs-lisp-mode)) 4222 (emacs-lisp-mode))
4215 (let ((inhibit-read-only t)) 4223 (let ((inhibit-read-only t))
@@ -4217,7 +4225,10 @@ if only the first line of the docstring is shown."))
4217 (custom-save-faces)) 4225 (custom-save-faces))
4218 (let ((file-precious-flag t)) 4226 (let ((file-precious-flag t))
4219 (save-buffer)) 4227 (save-buffer))
4220 (unless old-buffer 4228 (if old-buffer
4229 (progn
4230 (set-visited-file-name old-buffer-name)
4231 (set-buffer-modified-p nil))
4221 (kill-buffer (current-buffer)))))) 4232 (kill-buffer (current-buffer))))))
4222 4233
4223;;;###autoload 4234;;;###autoload