1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-23 10:34:07 +00:00

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).
This commit is contained in:
Paul Eggert 2016-05-22 17:29:58 -07:00
parent 2671179b11
commit 18a9bc1152

View File

@ -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))