aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChong Yidong2008-08-02 21:07:20 +0000
committerChong Yidong2008-08-02 21:07:20 +0000
commitac1831635bc3132f02e10cc855665a67e5085529 (patch)
treee4a6075fd10239a68ab063d0dd12f6170ac2e790
parentced0ddebf3fca524567325b961fb676fe74e0f7c (diff)
downloademacs-ac1831635bc3132f02e10cc855665a67e5085529.tar.gz
emacs-ac1831635bc3132f02e10cc855665a67e5085529.zip
(custom-save-all): Avoid destrying symlink if already visiting the
custom file.
-rw-r--r--lisp/cus-edit.el16
1 files changed, 14 insertions, 2 deletions
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index e39a50f3a8e..918f43a9da0 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -4265,9 +4265,18 @@ if only the first line of the docstring is shown."))
4265 (recentf-expand-file-name (custom-file))) 4265 (recentf-expand-file-name (custom-file)))
4266 "\\'") 4266 "\\'")
4267 recentf-exclude))) 4267 recentf-exclude)))
4268 (old-buffer (find-buffer-visiting filename))) 4268 (old-buffer (find-buffer-visiting filename))
4269 old-buffer-name)
4270
4269 (with-current-buffer (let ((find-file-visit-truename t)) 4271 (with-current-buffer (let ((find-file-visit-truename t))
4270 (or old-buffer (find-file-noselect filename))) 4272 (or old-buffer (find-file-noselect filename)))
4273 ;; We'll save using file-precious-flag, so avoid destroying
4274 ;; symlinks. (If we're not already visiting the buffer, this is
4275 ;; handled by find-file-visit-truename, above.)
4276 (when old-buffer
4277 (setq old-buffer-name (buffer-file-name))
4278 (set-visited-file-name (file-chase-links filename)))
4279
4271 (unless (eq major-mode 'emacs-lisp-mode) 4280 (unless (eq major-mode 'emacs-lisp-mode)
4272 (emacs-lisp-mode)) 4281 (emacs-lisp-mode))
4273 (let ((inhibit-read-only t)) 4282 (let ((inhibit-read-only t))
@@ -4275,7 +4284,10 @@ if only the first line of the docstring is shown."))
4275 (custom-save-faces)) 4284 (custom-save-faces))
4276 (let ((file-precious-flag t)) 4285 (let ((file-precious-flag t))
4277 (save-buffer)) 4286 (save-buffer))
4278 (unless old-buffer 4287 (if old-buffer
4288 (progn
4289 (set-visited-file-name old-buffer-name)
4290 (set-buffer-modified-p nil))
4279 (kill-buffer (current-buffer)))))) 4291 (kill-buffer (current-buffer))))))
4280 4292
4281;;;###autoload 4293;;;###autoload