diff options
| author | Chong Yidong | 2008-08-02 21:07:20 +0000 |
|---|---|---|
| committer | Chong Yidong | 2008-08-02 21:07:20 +0000 |
| commit | ac1831635bc3132f02e10cc855665a67e5085529 (patch) | |
| tree | e4a6075fd10239a68ab063d0dd12f6170ac2e790 | |
| parent | ced0ddebf3fca524567325b961fb676fe74e0f7c (diff) | |
| download | emacs-ac1831635bc3132f02e10cc855665a67e5085529.tar.gz emacs-ac1831635bc3132f02e10cc855665a67e5085529.zip | |
(custom-save-all): Avoid destrying symlink if already visiting the
custom file.
| -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.")) | |||
| 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 |