Установка плагинов emacs в windows

Я уже просматривал другие темы, но так и не нашел решения. Я пытаюсь установить плагин «nxhtml» для Emacs в Windows 7. Я уже установил свою переменную среды «HOME» как «C: \». Итак, моя папка .emacs.d находится там, и я поместил туда nxhtml и добавил следующую строку в свой файл «_emacs.d», как говорится в файле readme:

(загрузить "C:\.emacs.d\nxhtml\autostart.el")

Но он не загружается.

Я также пытался указать: (добавить в список 'путь загрузки "C:\.emacs.d\nxhtml")

(загрузить "autostart.el")

Но безрезультатно... Может ли кто-нибудь пролить свет? Спасибо.


person XVirtusX    schedule 04.06.2013    source источник
comment
С какой стати вы установили HOME на C:\ ? (Разве в Windows 7 для этого нет C:\Users\(username)?) И если вы имеете в виду, что вы настроили это для собственной среды Windows (в отличие от Cygwin или аналогичного), то я думаю, что вы спрашиваете о проблемах.   -  person phils    schedule 04.06.2013
comment
... если в Windows по умолчанию нет переменной среды HOME? (Но даже если это так, это не кажется хорошей идеей.)   -  person phils    schedule 04.06.2013


Ответы (2)


Здесь ряд моментов:

Во-первых, _emacs.d не является именем файла по умолчанию для вашего файла инициализации, т.е. emacs не загрузит его автоматически. Вместо этого попробуйте ~/.emacs.d/init.el или ~/.emacs.

Во-вторых, в Windows 7 есть функция, которая предотвращает запись программ в определенные системные каталоги, но для обратной совместимости многих старых программ, которые делают это, вместо того, чтобы вызывать их сбой, она молча перенаправляет запись в другое место, в конкретный каталог приложения. . C:\ является одним из таких каталогов, поэтому установка вашего HOME на него приведет к проблемам.

В-третьих, см. другой ответ о том, что обратная косая черта является escape-символом в строках Lisp.

person JSON    schedule 04.06.2013
comment
XVirtusX: Вы должны просмотреть C-h i g (emacs) Windows HOME RET - person phils; 04.06.2013
comment
Привет, Филс... да, _emacs.d является приемлемым файлом инициализации emacs в Windows, потому что вы не можете создать файл, начинающийся с точки в проводнике. Я также где-то читал рекомендацию установить переменную среды HOME (и нет, в Windows нет переменной по умолчанию), если вы хотите изменить каталог по умолчанию (мой случай). В любом случае, проблема в том, что я уже внес некоторые изменения в emacs, и он работает нормально. Так что я думаю, что это не проблема со ссылками на файлы или переменные среды... что еще я должен попробовать?! - person XVirtusX; 05.06.2013
comment
Используйте буфер *scratch* для проверки результатов кода. Оцените (file-exists-p "C:/.emacs.d/nxhtml/autostart.el"), чтобы убедиться, что он возвращает t, а затем (load "C:/.emacs.d/nxhtml/autostart.el"), чтобы убедиться, что он загрузится. C-j после закрывающей скобки будет выполнено вычисление и печать в *scratch*. - person phils; 05.06.2013
comment
XVirtusX, это я, а не Филс указал, что _emacs.d не распознается как имя файла инициализации. В качестве особого случая в Windows, для людей, которые настаивают на создании пустого файла с помощью Проводника, а не просто на редактировании файла в Emacs, в дополнение к .emacs распознается _emacs, но это не относится к каталогу .emacs.d, ни к любому файлу с таким именем. Я предлагаю вам последовать совету Фила и прочитать раздел руководства по работе с HOME в Windows, чтобы лучше понять ситуацию. - person JSON; 05.06.2013

\ является особенным в синтаксисе чтения (двойных кавычек) для строк, поскольку некоторые символы приобретают новое значение, когда перед ними ставится обратная косая черта (например, \n — это новая строка, \t — табуляция, а \" — символ двойной кавычки). Когда следующий символ не имеет особого значения в сочетании с обратной косой чертой, этот символ используется дословно, а обратная косая черта игнорируется.

"C:\.emacs.d\nxhtml\autostart.el" на самом деле является строкой:

C:.emacs.d
xhtml^Gutostart.el

Чтобы включить \ в строку, вам нужно написать \\

Однако, несмотря на то, что Emacs понимает обратную косую черту, в настоящее время он единообразен на всех платформах, позволяя использовать / в качестве разделителя каталогов1; так что просто сделайте это вместо этого.

1, а устаревшая переменная directory-sep-char полностью удалена.

person phils    schedule 04.06.2013
comment
Привет, phils, да, я знаю о двойной обратной косой черте, и я уже пробовал это, но безрезультатно. Также пробовал с косой чертой и не работал. В моем файле emacs я изменил каталог по умолчанию, используя только обычную обратную косую черту, и он работает нормально. - person XVirtusX; 04.06.2013