Відповіді:
Emacs має кілька місць, де він шукає файли init, як це зафіксовано в посібнику . Якщо ви хочете налаштувати Emacs, потрібно почати з одного з цих файлів.
Поширений підхід полягає у використанні файлу init.el
у вашому user-emacs-directory
, а не .emacs
в каталозі HOME.
Значення user-emacs-directory
за замовчуванням до ~/.emacs.d
, таким чином, воно все ще стосується вашого ДОМАШНЯ, але перевага такого підходу полягає в тому, що ви можете тримати все, що стосується вашої конфігурації 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) .
Ваш файл init знаходиться у вашому домашньому каталозі, який ви можете розмістити в будь-якому місці. Мабуть, ви хочете мати інший каталог для матеріалів, які завантажує Emacs. Це не проблема. Помістіть свій файл init у свій домашній каталог і дозвольте цьому файлу додати ще один каталог до значення змінної, load-path
а потім вимагати будь-які інші бібліотеки Emacs, які ви хочете використовувати. Помістіть ці бібліотеки в інший каталог.
IOW, ваш файл init не повинен містити нічого, крім налаштування каталогу, де ви зберігаєте бібліотеки 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, на сайт-start.el
На вашому сайті також може бути файл запуску сайту; це називається site-start.el, якщо він існує. Як і default.el, Emacs знаходить цей файл через стандартний шлях пошуку для бібліотек Lisp. Emacs завантажує цю бібліотеку перед завантаженням вашого файлу init.
site-start.el
щоб завантажити власну,init.el
і вам більше не потрібно. а.emacs
. У цьому прикладі вам не потрібно поспілкуватися з домашнім каталогом (якщо хтось інший на комп’ютер не вкладе туди речі, які впливатимуть на те, що ви робите). Іншими словами, він може бути порожнім, і ніколи не потрібно його чіпати.