diff options
author | Chong Yidong <cyd@stupidchicken.com> | 2008-08-02 21:07:20 +0000 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2008-08-02 21:07:20 +0000 |
commit | ac1831635bc3132f02e10cc855665a67e5085529 (patch) | |
tree | e4a6075fd10239a68ab063d0dd12f6170ac2e790 /lisp/cus-edit.el | |
parent | ced0ddebf3fca524567325b961fb676fe74e0f7c (diff) | |
download | emacs-ac1831635bc3132f02e10cc855665a67e5085529.tar.gz |
(custom-save-all): Avoid destrying symlink if already visiting the
custom file.
Diffstat (limited to 'lisp/cus-edit.el')
-rw-r--r-- | lisp/cus-edit.el | 16 |
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.")) (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)) @@ -4275,7 +4284,10 @@ if only the first line of the docstring is shown.")) (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 |