emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-25 18a9bc1: Do not trash symlinks to init file


From: Paul Eggert
Subject: [Emacs-diffs] emacs-25 18a9bc1: Do not trash symlinks to init file
Date: Mon, 23 May 2016 00:30:38 +0000 (UTC)

branch: emacs-25
commit 18a9bc1152452fecfa09e6f2f3a5d6677a564977
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Do not trash symlinks to init file
    
    If the user’s init file is a symbolic link, do not break the link
    when initializing the package system.  Problem reported by Jackson
    Hamilton (Bug#23050).
    * lisp/emacs-lisp/package.el (package--ensure-init-file):
    Bind find-file-visit-truename when visiting the init file, and
    save and restore the buffer name the way cus-edit does in a
    similar situation (Bug#454).
---
 lisp/emacs-lisp/package.el |   12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index b0a6db0..14626e2 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1869,6 +1869,7 @@ add a call to it along with some explanatory comments."
              (file-readable-p user-init-file)
              (file-writable-p user-init-file))
     (let* ((buffer (find-buffer-visiting user-init-file))
+           buffer-name
            (contains-init
             (if buffer
                 (with-current-buffer buffer
@@ -1884,8 +1885,12 @@ add a call to it along with some explanatory comments."
                 (re-search-forward "(package-initialize\\_>" nil 'noerror)))))
       (unless contains-init
         (with-current-buffer (or buffer
-                                 (let ((delay-mode-hooks t))
+                                 (let ((delay-mode-hooks t)
+                                       (find-file-visit-truename t))
                                    (find-file-noselect user-init-file)))
+          (when buffer
+            (setq buffer-name (buffer-file-name))
+            (set-visited-file-name (file-chase-links user-init-file)))
           (save-excursion
             (save-restriction
               (widen)
@@ -1904,7 +1909,10 @@ add a call to it along with some explanatory comments."
                 (insert "\n"))
               (let ((file-precious-flag t))
                 (save-buffer))
-              (unless buffer
+              (if buffer
+                  (progn
+                    (set-visited-file-name buffer-name)
+                    (set-buffer-modified-p nil))
                 (kill-buffer (current-buffer)))))))))
   (setq package--init-file-ensured t))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]