Ответы:
Emacs имеет несколько мест, где он ищет файлы инициализации, как описано в руководстве . Если вы хотите настроить Emacs, вы должны начать с одного из этих файлов.
Обычный подход заключается в использовании файла init.el
в вашем user-emacs-directory
, а не .emacs
в вашем домашнем каталоге.
По user-emacs-directory
умолчанию ~/.emacs.d
, так что он все еще относится к вашему HOME, но выгода этого подхода в том, что вы можете хранить все, что связано с вашей конфигурацией Emacs, в одном месте. Этот каталог может находиться под контролем версий, иметь резервные копии, совместно использоваться несколькими компьютерами и т. Д. Вы можете использовать символическую ссылку ( mklink
в Windows), чтобы хранить файлы в другом месте.
Например, довольно часто можно увидеть, как люди поддерживают свою конфигурацию Emacs на Github. Вы можете найти множество примеров этого путем поиска Github для Elisp проектов с init.el файлами .
user-emacs-directory
При каждой установке Windows, в которой я использую Emacs, у меня есть следующий код в .emacs
файле в указанном месте:
;; Place this file in C:\Users\Username\AppData\Roaming and point to the appropriate files
(setq user-init-file "C:/path/to/.emacs")
(setq user-emacs-directory "C:/path/to/.emacs.d/")
(setq default-directory "C:/whatever/you/want/to/start/in")
(setenv "HOME" "D:/my/home/directory")
(load user-init-file)
Таким образом, я могу поставить свой .emacs
и .emacs.d/
где угодно.
Ваш файл .emacs попадает в ваш HOME
каталог. Из руководства Emacs:
Windows-эквивалент HOME - это каталог данных приложения для пользователя. Фактическое местоположение зависит от версии Windows ...
Вы можете переопределить это значение по умолчанию HOME, явно установив переменную среды HOME, чтобы она указывала на любой каталог в вашей системе. HOME можно установить либо из командной строки командной строки, либо из диалогового окна «Свойства» в «Мой компьютер». HOME также можно установить в системном реестре, см. Реестр MS-Windows.
HOME
каталогом, на что-то совершенно другое. Следовательно, почему я называю это изменение взломать. Установка его в соответствующее значение, очевидно, хорошо.
Ты говоришь:
Я знаю, как установить домашний каталог, однако по причинам контроля версий я хочу иметь возможность настроить emacs для чтения из другого каталога (чтобы я мог иметь каталог, специфичный для emacs) .
Ваш файл инициализации находится в вашем домашнем каталоге, который вы можете поместить куда угодно. Очевидно, вы хотите иметь другой каталог для вещей, которые загружает Emacs. Это не проблема. Поместите файл инициализации в свой домашний каталог, и пусть этот файл добавит другой каталог к значению переменной, load-path
а затем потребует любые другие библиотеки Emacs, которые вы хотите использовать. Поместите эти библиотеки в этот другой каталог.
Итак, ваш файл инициализации не должен содержать ничего, кроме установки каталога, в котором вы храните библиотеки Emacs, которые вы хотите загрузить.
Просто для полноты я приведу ссылку на:
https://www.gnu.org/software/emacs/manual/html_node/efaq-w32/Location-of-init-file.html
Который говорит, что вы можете установить HOME
значение в пути реестра:
HKCU\SOFTWARE\GNU\Emacs\HOME
Но это значение переопределяется переменной окружения HOME
.
Думаю, вы могли бы поместить (setq user-init-file "C:/path/to/.emacs")
и другие строки, предложенные @ryan в site-start.el
Ваш сайт также может иметь файл запуска сайта; это называется site-start.el, если он существует. Как и default.el, Emacs находит этот файл через стандартный путь поиска библиотек Lisp. Emacs загружает эту библиотеку перед загрузкой вашего файла инициализации.
site-start.el
своей загрузки,init.el
и вам больше не нужно а.emacs
. В этом примере вам не нужно возиться с домашним каталогом (если кто-то на компьютере не помещает туда что-то, что повлияет на то, что вы делаете). Другими словами, он может быть пустым, и вам никогда не нужно его трогать.