Есть способ указать пользовательский файл инициализации при запуске emacs? - программирование
Подтвердить что ты не робот

Есть способ указать пользовательский файл инициализации при запуске emacs?

Я пробовал runemacs --user d:\path\to\init\.emacs, но он дал

Error (initialization): Invalid user name d:\path\to\init\.emacs

Я имею в виду пользовательский файл в настраиваемом местоположении, например, на моем pendrive и т.д., а не в местах по умолчанию в папке пользователя. Я пытаюсь создать cmd файлы с соответствующими вводами для различной конфигурации.

4b9b3361

Ответ 1

Я предполагаю, что ваша конечная цель - запустить Emacs с USB-накопителя, который вы можете носить с собой. Существует два способа запуска Emacs с другим файлом инициализации:

(1) -q -load way

Это просто запустить

emacs -q --load path-to-your-init.el

который запускает Emacs без инициализации, затем загружает path-to-your-init.el

Gotchas этого способа: в этом случае Emacs действительно не считает файл el файлом init, на самом деле Emacs вообще не прошел инициализацию, а это означает, что следующие шаги после инициализации пропущены

  • включение пакетов, то есть оценка (package-initialize)

  • running hook after-init-hook, то есть, оценивая (run-hooks after-init-hook)

Возможно, вам придется добавить материал после инициализации в альтернативный файл инициализации.

Кроме того, интерфейс Customize не позволит вам сохранять настройки, если Emacs запущен с опцией -q.

(2) путь HOME

Создайте my-emacs.bat с содержимым:

set HOME=%~dp0
C:\path-to-your\Emacs\bin\runemacs.exe --xrm "emacs.Background: light green"

Когда вы нажимаете на этот файл bat, Emacs создает папку с именем .emacs.d не в вашем обычном каталоге пользователя, а в том, где находится файл bat. Вы можете разместить свой init.el в этой папке .emacs.d. С помощью этого Emacs оценка (find-file "~/.emacs.d/init.el) открывает ваш собственный переносимый init.el, а не файл init в вашем обычном каталоге пользователя. Вы можете удалить часть --xrm "emacs.Background: light green", я включаю это, потому что я всегда забываю, какой Emacs есть.

Gotchas: этот Emacs имеет свой собственный каталог пакетов в своем собственном каталоге .emacs.d. Это может быть или не быть тем, что вы хотите. Если вы хотите предоставить общий доступ к каталогу пакетов, вы можете изменить package-user-dir или создать символическую ссылку в каталог с общим доступом, используя расширение командной строки.

Что следует учитывать при запуске Emacs на USB-накопителе:

Emacs передает некоторые из своих функций внешним инструментам. Grepping и сравнение передаются на grep и diff, поэтому вы, вероятно, установили, по крайней мере, GnuWin32 Grep и GnuWin32 DiffUtils в вашей системе. И часть проверки орфографии передается на аутсорс, которая также является отдельной установкой. Шифрование передается на GPG, поэтому Gpg4Win - другая отдельная установка. Чтобы ваши портативные Emacs имели все эти функции, все эти внешние инструменты также должны быть на вашем USB-накопителе. К счастью, GnuWin32 и aspell являются портативными. Я не знаю, есть ли GPG. Зависимость от внешнего grep может быть устранена, если вам удастся сделать версии lgrep и rgrep, которые зависят только от собственной grep eshell, но, похоже, никто этого не сделал, поэтому сделать такой lgrep/rgrep смело идти туда, куда никто не ходил раньше.

Ответ 2

Вы можете получить помощь по всем параметрам emacs, набрав emacs --help в командной строке. Эта помощь показывает, что --user ожидает имя пользователя, а не путь к elisp файлу.

Чтобы загрузить файл lisp при запуске, вы можете использовать опцию --load:

$ emacs --help
...
--load, -l FILE         load Emacs Lisp FILE using the load function
...

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

$ emacs --help
...
--no-init-file, -q          load neither ~/.emacs nor default.el
...