Однако следует отметить, что только Emacs 22+ загружает ~/.emacs.d/init.el качестве альтернативного файла инициализации для каждого пользователя. В качестве новой, но совместимой с нисходящим компонентом приоритета ~/.emacs . Это организовано в lisp/startup.el .
После запуска переменная user-init-file содержит полный путь к файлу инициализации, например, /home/me/.emacs.elc или C:\Users\Me\.emacs.d\init.el и т.д. Чтобы просмотреть его значение в типе буфера *scratch* (insert user-init-file) за которым следует C-x C-e .
~/.emacs.d/ фактически является стандартным местом для дополнительных файлов для каждого пользователя. Путь определяется переменной Emacs user-emacs-directory . В Windows этот путь зависит от переменной HOME (не USERPROFILE). Например, если для HOME установлено значение C:\ , это будет C:\.emacs.d . Когда я запускаю Emacs переносимо, я использую это поведение, используя пакетный файл, который устанавливает HOME в каталог на жестком диске.
В этом каталоге есть не только файлы Lisp! Например, функция автосохранения по умолчанию сохраняет любой отредактированный файл в ~/.emacs.d/auto-save-list/ (см. Переменную auto-save-list-file-prefix ). Это вдохновило меня на сохранение резервных копий файлов там же:
(defvar --user-backup-directory (concat user-emacs-directory "backups"))
(if (not (file-exists-p --user-backup-directory))
(make-directory --user-backup-directory t))
(setq backup-directory-alist `(("." . ,--user-backup-directory)))
(setq make-backup-files t)
До Emacs 22 у меня также был каталог ~/elisp для моих личных файлов Lisp. Сейчас пользуюсь
(pushnew (expand-file-name "~/.emacs.d/elisp") load-path)
как советовано здесь.
Так что ~/.emacs.d на самом деле довольно полезен, хотя я нахожу идею ~/.emacs.d/init.el сомнительной. ~/.emacs.d/ является стандартным местом для дополнительных файлов для каждого пользователя. Разве не имеет смысла, когда Emacs читает ~/.emacs.d/init.el дополнение к ~/.emacs.el?