Как установить другое местоположение для файла .emacs dot emacs в Windows 7?

16

Я использую компьютер с Windows 7 и не имею доступа администратора. Поэтому я не могу поместить точечный файл Emacs в корневой каталог. Есть ли способ указать другое местоположение для файла dot emacs?

Startec
источник
Если вы можете контролировать свое собственное местоположение установки Emacs (например, располагать ее где угодно, или, по крайней мере, иметь доступ для записи к установке), тогда вы можете получить полный контроль, используя что-то вроде site-start.elсвоей загрузки, init.elи вам больше не нужно а .emacs. В этом примере вам не нужно возиться с домашним каталогом (если кто-то на компьютере не помещает туда что-то, что повлияет на то, что вы делаете). Другими словами, он может быть пустым, и вам никогда не нужно его трогать.
юрист

Ответы:

4

Emacs имеет несколько мест, где он ищет файлы инициализации, как описано в руководстве . Если вы хотите настроить Emacs, вы должны начать с одного из этих файлов.

Обычный подход заключается в использовании файла init.elв вашем user-emacs-directory, а не .emacsв вашем домашнем каталоге.

По user-emacs-directoryумолчанию ~/.emacs.d, так что он все еще относится к вашему HOME, но выгода этого подхода в том, что вы можете хранить все, что связано с вашей конфигурацией Emacs, в одном месте. Этот каталог может находиться под контролем версий, иметь резервные копии, совместно использоваться несколькими компьютерами и т. Д. Вы можете использовать символическую ссылку ( mklinkв Windows), чтобы хранить файлы в другом месте.

Например, довольно часто можно увидеть, как люди поддерживают свою конфигурацию Emacs на Github. Вы можете найти множество примеров этого путем поиска Github для Elisp проектов с init.el файлами .

glucas
источник
Мне нравится это решение, и я хотел бы использовать его, однако оно все еще не говорит мне, как изменить мойuser-emacs-directory
Startec
Мое предложение было использовать символические ссылки, действительно. Как показывают другие ответы, вам нужно поместить что-то в одно из стандартных мест, которые Emacs читает во время инициализации, даже если все, что он делает, это загружает вашу конфигурацию откуда-то еще.
glucas
Ссылка на руководство не работает.
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/где угодно.

Райан
источник
Спасибо, почти только то, что мне было нужно. Я оставил каталог по умолчанию и предложение ДОМОЙ, но в остальном это то, что мне нужно для установки q!
Грант Боуман
Я попробовал ответ Райана. Но теперь я не могу открыть этот файл в 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 - я бы не назвал это "взломать". В моей сборке Emacs 25, если вы не задали «HOME» с переменной окружения, по умолчанию используется каталог установки Emacs, что явно неверно. «HOME» должен быть установлен на то, что пользователь считает своим домашним каталогом, а установка переменной окружения - это стандартный стандартный способ сделать это. В системах Unix это обычно делается для пользователя во время входа в систему, но в Windows вы должны сделать это вручную.
TED
Смысл этого в том, чтобы изменить то, что вы обычно считаете своим HOMEкаталогом, на что-то совершенно другое. Следовательно, почему я называю это изменение взломать. Установка его в соответствующее значение, очевидно, хорошо.
Васамаса
2

Ты говоришь:

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

Ваш файл инициализации находится в вашем домашнем каталоге, который вы можете поместить куда угодно. Очевидно, вы хотите иметь другой каталог для вещей, которые загружает Emacs. Это не проблема. Поместите файл инициализации в свой домашний каталог, и пусть этот файл добавит другой каталог к ​​значению переменной, load-pathа затем потребует любые другие библиотеки Emacs, которые вы хотите использовать. Поместите эти библиотеки в этот другой каталог.

Итак, ваш файл инициализации не должен содержать ничего, кроме установки каталога, в котором вы храните библиотеки Emacs, которые вы хотите загрузить.

Нарисовалась
источник
0

Думаю, вы могли бы поместить (setq user-init-file "C:/path/to/.emacs")и другие строки, предложенные @ryan в site-start.el

Ваш сайт также может иметь файл запуска сайта; это называется site-start.el, если он существует. Как и default.el, Emacs находит этот файл через стандартный путь поиска библиотек Lisp. Emacs загружает эту библиотеку перед загрузкой вашего файла инициализации.

Дима Фомин
источник