43.1.2 Файл инициализации

Когда вы запускаете Emacs, он обычно пытается загрузить ваш файл инициализации. Это либо файл с именем .emacs или .emacs.el в вашем домашнем каталоге, либо файл с именем init.el в подкаталоге .emacs.d в вашем домашнем каталоге.

Командные переключатели «-q», «-Q» и «-u» контролируют, будет ли загружен файл инициализации и где его искать; «-q» (и более строгий «-Q») указывает не загружать файл инициализации, в то время как «-u user» указывает загрузить файл инициализации user вместо вашего. См. Вход в Emacs в Руководство GNU Emacs. Если ни один из этих вариантов не указан, Emacs использует переменную окружения LOGNAME или переменную USER (в большинстве систем) или USERNAME (в системах MS) для поиска вашего домашнего каталога и, следовательно, вашего файла инициализации; таким образом, даже если вы выполнили su, Emacs по-прежнему загружает ваш собственный файл инициализации. Однако, если эти переменные окружения отсутствуют, Emacs использует ваш идентификатор пользователя для поиска домашнего каталога.

Emacs также пытается загрузить второй файл инициализации, называемый ранний файл инициализации, если он существует. Это файл с именем early-init.el в вашем каталоге ~/.emacs.d. Разница между ранним файлом инициализации и обычным файлом инициализации в том, что ранний файл инициализации загружается намного раньше в процессе запуска, поэтому вы можете использовать его для настройки некоторых вещей, которые инициализируются до загрузки обычного файла инициализации. Например, вы можете настроить процесс инициализации системы пакетов, установив такие переменные, как package-load-list или package-enable-at-startup. См. Установка пакетов в Руководство GNU Emacs.

Установка Emacs может иметь файл инициализации по умолчанию, который является библиотекой Lisp с именем default.el. Emacs находит этот файл через стандартный путь поиска библиотек (см. Как программы загружают). Дистрибутив Emacs не поставляется с этим файлом; он предназначен для локальной настройки. Если файл инициализации по умолчанию существует, он загружается при каждом запуске Emacs. Но ваш собственный личный файл инициализации, если он есть, загружается первым; если он устанавливает inhibit-default-init в значение, отличное от nil, то Emacs не загружает файл default.el впоследствии. В пакетном режиме или если вы указываете «-q» (или «-Q»), Emacs не загружает ни ваш личный файл инициализации, ни файл инициализации по умолчанию.

Другой файл для настройки сайта — site-start.el. Emacs загружает этот файл до файла инициализации пользователя. Вы можете запретить загрузку этого файла с помощью опции «--no-site-file».

Пользовательская опция: site-run-file

Эта переменная указывает файл настройки сайта, который загружается до файла инициализации пользователя. Ее нормальное значение — «"site-start"». Единственный способ изменить его с реальным эффектом — сделать это до дампинга Emacs.

См. Примеры файлов инициализации в Руководство GNU Emacs, чтобы увидеть примеры того, как выполнить различные общежелательные настройки в вашем файле .emacs.

Пользовательская опция: inhibit-default-init

Если эта переменная не равна nil, она не позволяет Emacs загружать библиотечный файл инициализации по умолчанию. Значение по умолчанию — nil.

Переменная: before-init-hook

Этот обычный хук выполняется один раз непосредственно перед загрузкой всех файлов инициализации (site-start.el, ваш файл инициализации и default.el). (Единственный способ изменить его с реальным эффектом — сделать это до дампинга Emacs.)

Переменная: after-init-hook

Этот обычный хук выполняется один раз непосредственно после загрузки всех файлов инициализации (site-start.el, ваш файл инициализации и default.el), перед загрузкой библиотеки, специфичной для терминала (если запуск происходит в текстовом терминале) и обработкой аргументов командной строки.

Переменная: emacs-startup-hook

Этот обычный хук выполняется один раз непосредственно после обработки аргументов командной строки. В пакетном режиме Emacs не выполняет этот хук.

Переменная: window-setup-hook

Этот обычный хук очень похож на emacs-startup-hook. Единственное отличие в том, что он выполняется немного позже, после установки параметров фрейма. См. window-setup-hook.

Переменная: user-init-file

Эта переменная содержит абсолютное имя файла файла инициализации пользователя. Если загруженный фактический файл инициализации является скомпилированным файлом, таким как .emacs.elc, значение относится к соответствующему исходному файлу.

Переменная: user-emacs-directory

Эта переменная содержит имя каталога по умолчанию для Emacs. По умолчанию это ${XDG_CONFIG_HOME-'~/.config'}/emacs/, если этот каталог существует, и ~/.emacs.d/ и ~/.emacs не существуют, в противном случае — ~/.emacs.d/ на всех платформах, кроме MS-DOS. Здесь ${XDG_CONFIG_HOME-'~/.config'} означает значение переменной окружения XDG_CONFIG_HOME, если эта переменная установлена, и ~/.config в противном случае. См. Как Emacs находит ваш файл инициализации в Руководство GNU Emacs.