Ответ 1
Что вы действительно хотите, так это автоматически получать автоматически созданные автозагрузки, чтобы ваш файл .emacs оставался нетронутым. В большинстве пакетов уже есть строки ;;;###autoload
, а если нет, их можно легко добавить.
Чтобы управлять этим, вы можете поместить все пакеты в каталог, например ~/emacs/lisp
, и там есть файл с именем update-auto-loads.el
, который содержит:
;; put this path into the load-path automatically
;;;###autoload
(progn
(setq load-path (cons (file-name-directory load-file-name) load-path)))
;;;###autoload
(defun update-autoloads-in-package-area (&optional file)
"Update autoloads for files in the diretory containing this file."
(interactive)
(let ((base (file-truename
(file-name-directory
(symbol-file 'update-autoloads-in-package-area 'defun)))))
(require 'autoload) ;ironic, i know
(let ((generated-autoload-file (concat base "loaddefs.el")))
(when (not (file-exists-p generated-autoload-file))
(with-current-buffer (find-file-noselect generated-autoload-file)
(insert ";;") ;; create the file with non-zero size to appease autoload
(save-buffer)))
(cd base)
(if file
(update-file-autoloads file)
(update-autoloads-from-directories base)))))
;;;###autoload
(defun update-autoloads-for-file-in-package-area (file)
(interactive "f")
(update-autoloads-in-package-area file))
Если вы добавите 'update-autoloads-in-package-area
в свой kill-emacs-hook
, тогда loaddefs.el
будет автоматически обновляться каждый раз, когда вы выходите из Emacs.
И, чтобы связать все это вместе, добавьте это в свой .emacs
:
(load-file "~/emacs/lisp/loaddefs.el")
Теперь, когда вы загружаете новый пакет, просто сохраните его в каталоге ~/emacs/lisp
, обновите loaddefs через M-x update-autoloads-in-package-area
(или выйдите из emacs), и он будет доступен при следующем запуске Emacs. Больше нет изменений в .emacs
для загрузки вещей.
См. этот вопрос для других альтернатив ускорению запуска Emacs: Как ускорить запуск Emacs быстрее?