]> git.eshelyaron.com Git - emacs.git/commitdiff
(custom-save-all): Avoid destrying symlink if already visiting the
authorChong Yidong <cyd@stupidchicken.com>
Sat, 2 Aug 2008 21:07:20 +0000 (21:07 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Sat, 2 Aug 2008 21:07:20 +0000 (21:07 +0000)
custom file.

lisp/cus-edit.el

index e39a50f3a8efe601c94d4a7b4935c96681b92e13..918f43a9da0d1b5ca77dba1cee8b162684fcea45 100644 (file)
@@ -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