Як встановити інше місце для файлу .macs для крапки emacs у Windows 7?


16

Я використовую комп'ютер під керуванням Windows 7 і не маю доступу адміністратора. Тому я не можу розміщувати крапковий файл emacs у кореневому каталозі. Чи є спосіб, щоб я вказав інше місце для файлу крапки emacs?


Якщо ви можете керувати своїм розташуванням установки Emacs (наприклад, розмістити її куди завгодно, або принаймні мати доступ до запису до інсталяції), то ви можете взяти повний контроль, використовуючи щось на зразок, site-start.elщоб завантажити власну, init.elі вам більше не потрібно. а .emacs. У цьому прикладі вам не потрібно поспілкуватися з домашнім каталогом (якщо хтось інший на комп’ютер не вкладе туди речі, які впливатимуть на те, що ви робите). Іншими словами, він може бути порожнім, і ніколи не потрібно його чіпати.
законник

Відповіді:


4

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
Startec

Моя пропозиція полягала в тому, щоб використовувати символьні посилання. Як показано в інших відповідях, вам потрібно помістити щось в одне зі стандартних місць, яке Emacs читає під час init, навіть якщо все, що він робить, - це завантажувати вашу конфігурацію з іншого місця.
глюкас

Посилання вручну порушено.
corvus_192

17

У кожній установці 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/де завгодно.


Дякую, майже просто те, що мені було потрібно. Я залишив довідник за замовчуванням і HOME sentenv, але в іншому випадку це те, що мені потрібно встановити!
Грант Боуман

Я спробував відповідь Райана. Але тепер я не в змозі відкрити цей файл у emacs із папки AppData \ Roaming. Будь ласка, вибачте, що я не міг додати коментар, тому що у мене ще немає 50 балів.
Sreekumar R

@SreekumarR Вам слід задати нове запитання, посилаючись на це, замість того, щоб опублікувати "Відповідь"
Ендрю Сванн

@SreekumarR Якщо у вас є нове запитання, будь ласка, задайте його, натиснувши кнопку Задати питання . Додайте посилання на це питання, якщо це допомагає надати контекст. - З огляду
Стефан

5

Ваш файл .emacs знаходиться у вашому HOMEкаталозі. З посібника Emacs:

Еквівалент Windows HOME - це специфічний для користувача каталог даних програми. Фактичне розташування залежить від версії Windows ...

Ви можете замінити це значення за замовчуванням HOME, чітко встановивши змінну середовища HOME для вказівки на будь-який каталог вашої системи. HOME можна встановити або з діалогового вікна командної оболонки, або з діалогового вікна "Властивості" "Мій комп'ютер". HOME також можна встановити в системному реєстрі, див. Реєстр MS-Windows.


1
Так, я знаю, як встановити домашній каталог, проте з міркувань контролю версій я хочу мати можливість налаштувати emacs на зчитування з іншого каталогу (щоб я міг мати каталог, специфічний для emacs)
Startec,

3
Зауважте, що цей злом змушує Emacs розглядати щось інше як домашній каталог.
wasamasa

@wasamasa - я б не назвав це "рубанням". У моєму складі Emacs 25, якщо ви не встановите "HOME" зі змінною середовища, вона за замовчуванням встановлює каталог встановлення Emacs, що абсолютно очевидно неправильно. "ДОМАШНЄ" слід встановити на те, що користувач вважає своїм домашнім каталогом, а встановлення змінної середовища - це призначений стандартний спосіб зробити це. У системах Unix це звичайно вже робиться для користувача під час процесу входу, але в Windows це потрібно зробити вручну.
ТЕД

Сенс цього полягає в тому, щоб змінити те, що ви зазвичай вважаєте у своєму HOMEкаталозі чимось дивним. Тому я називаю цю зміну хаком. Встановити його на відповідне значення, очевидно, добре.
wasamasa

2

Ти кажеш:

Я знаю, як встановити домашній каталог, проте з міркувань контролю версій я хочу мати можливість emacs читати з іншого каталогу (щоб я міг мати каталог, специфічний для emacs) .

Ваш файл init знаходиться у вашому домашньому каталозі, який ви можете розмістити в будь-якому місці. Мабуть, ви хочете мати інший каталог для матеріалів, які завантажує Emacs. Це не проблема. Помістіть свій файл init у свій домашній каталог і дозвольте цьому файлу додати ще один каталог до значення змінної, load-pathа потім вимагати будь-які інші бібліотеки Emacs, які ви хочете використовувати. Помістіть ці бібліотеки в інший каталог.

IOW, ваш файл init не повинен містити нічого, крім налаштування каталогу, де ви зберігаєте бібліотеки Emacs, які ви хочете завантажити.



0

Подумайте, ви могли б розмістити (setq user-init-file "C:/path/to/.emacs")й інші рядки, запропоновані @ryan, на сайт-start.el

На вашому сайті також може бути файл запуску сайту; це називається site-start.el, якщо він існує. Як і default.el, Emacs знаходить цей файл через стандартний шлях пошуку для бібліотек Lisp. Emacs завантажує цю бібліотеку перед завантаженням вашого файлу init.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.