Как запустить emacs с разными конфигурациями

Я часто сталкиваюсь со следующими популярными сборками Emacs:

В настоящее время я использую пользовательскую конфигурацию, но я бы хотел поэкспериментировать с этими сборками, не забивая мою текущую ~/.emacs.d,

Вот некоторая предыстория моей текущей установки:

Я установил Emacs через Homebrew, поэтому он находится здесь: /usr/local/Cellar/emacs/HEAD/Emacs.appМоя текущая версия Emacs: GNU Emacs 24.3.50.1 (i386-apple-darwin13.0.0, NS apple-appkit-1265.00)

Вот что я хотел бы знать:

  1. Какой самый простой способ переключения между этими сборками, а также моей текущей пользовательской конфигурацией?

  2. Учитывая мои текущие настройки, возможно ли запустить несколько сессий Emacs, каждый со своей конфигурацией / буферами?

4 ответа

Решение

(Изменить: я включил этот подход в сценарий оболочки, который я добавил в EmacsWiki.)

Я был бы склонен использовать $HOME переменная окружения:

  1. Сначала скопируйте "дистрибутив" (если нет лучшего термина) в подкаталог .emacs.d каталога, который будет служить заменой $HOME для этого распределения. т.е. /path/to/(distribution)/.emacs.d:

    $ git clone https://github.com/bbatsov/prelude.git ~/emacs/prelude/.emacs.d
    $ git clone https://github.com/overtone/emacs-live.git ~/emacs/emacs-live/.emacs.d
    
  2. Тогда вы можете запустить Emacs, используя env установить HOME переменная окружения локально для этой команды:

    $ env HOME=$HOME/emacs/prelude emacs
    $ env HOME=$HOME/emacs/emacs-live emacs
    

Они не должны взаимодействовать друг с другом, поэтому вы можете запускать их вместе и иметь несколько параллельных экземпляров emacs, каждый из которых использует свою конфигурацию.

Я вижу, что графен на самом деле является пакетом ELPA, поэтому он не имеет init.el файл и должен быть установлен через менеджер пакетов; но вы все равно можете использовать тот же метод для установки его в отдельной чистой конфигурации: просто создайте структуру каталогов, аналогичную другим, затем создайте файл init.el (например, ~/emacs/graphene/.emacs.d/init.el) содержащий код из инструкции по установке графена, затем запустите emacs (например, env HOME=$HOME/emacs/graphene emacs) и завершите оставшуюся часть инструкции по установке.

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

Вы можете даже предпочесть это таким образом - преимущество в том, что если что-то в пробном дистрибутиве записывает файлы в домашний каталог, оно не будет загромождать ваши настоящие файлы.

Это также может быть полезным подходом при обновлении Emacs до нового выпуска (если вы можете запускать как старые, так и новые версии одновременно), так как вы можете настроить копию существующей конфигурации для использования с новым Emacs до тех пор, пока вы не ' Убедитесь, что все работает, и вы можете редактировать новую конфигурацию, не рискуя сломать существующую. Или переверните это, и вместо этого сохраните исходную конфигурацию в новом / альтернативном месте, на случай, если она понадобится вам в качестве резервной копии.

Я создаю ~/.emacs.1.d/init.el файл и дайте ему содержимое:

(setq user-emacs-directory "~/.emacs.1.d/")

затем запустите emacs вот так emacs -q -l ~/.emacs.1.d/init.el, теперь emacs использует новую конфигурацию.

успех!!

  • -q означает пропустить настройку по умолчанию ~/.emacs.d/init.el
  • -l означает загрузку новой конфигурации

Вы можете символическую ссылку ~/.emacs.d, вот что я делаю

1) Попробуй сохранить мою конфигурацию emacs ~/.emacs.d ориентированные, т.е. все файлы конфигурации должны находиться в этой папке. Например я использую workgroups2по умолчанию он сохраняет конфигурацию рабочей группы в ~/.emacs_workgroups но я настроил его для сохранения конфигурации в ~/.emacs.d/workgroups, так что вся моя конфигурация emacs находится в одной папке.

2) Тогда у меня есть ~/emacs_configs папка, в которой находятся все папки конфигурации (в основном это папка с init.el и остальной частью конфигурации), поэтому моя личная папка конфигурации будет ~/emacs_configs/iqbalбудет распространяться прелюдия ~/emacs_configs/prelude

3) Тогда наконец я символическую ссылку ~/.emacs.d к конфигурации, которую я действительно хочу использовать, например. использовать мою конфигурацию я сделаю ln -s ~/emacs_configs/iqbal .emacs.d, Если вы хотите попробовать некоторую конфигурацию, просто скопируйте папку конфигурации в ~/emacs_configs/whatever_name и изменить символическую ссылку

Надеюсь это поможет

Вы можете сделать это с помощью chemacs2. Это основной (единственный?) вариант использования chemacs2.

Другие вопросы по тегам