2013-06-17 4 views
16

Я попытался runemacs --user d:\path\to\init\.emacs, но это даетЕсть ли способ указать пользовательский файл инициализации при запуске emacs?

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

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

+1

'Недопустимое имя пользователя' должно давать подсказку! – devnull

ответ

23

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

(1) -q --load путь

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

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

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

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

  • стимулирующих пакетов, то есть, оценка (package-initialize)

  • работает крюк after-init-hook, то есть оценки (run-hooks after-init-hook)

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

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

(2) Начальный путь

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

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

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

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

Somethings рассмотреть для запуска Emacs на диске USB:

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

7

Вы можете получить справку по всем параметрам 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 
...