Имейте два emacs. Хотите использовать spacemacs с одним и оставить другой нетронутым

У меня есть emacs24 и emacs25 на моей машине. Я хочу использовать spacemacs с emacs24 и оставить emacs25... ну... как emacs. Когда я устанавливаю spacemacs, мои файлы ~/.emacs и ~/.emacs.d меняются. Оба emacs начинают использовать spacemacs, чего я не хочу. Есть ли способ иметь spacemacs и emacs одновременно. Пытался найти решение и нашел решение для хранения отдельных файлов конфигурации. Но как заставить emacs искать определенный файл конфигурации. Кстати, если вы еще не догадались... я нуб.


person jc_john    schedule 17.06.2017    source источник
comment
emacs -l /путь/к/конфигурации?   -  person bertfred    schedule 17.06.2017
comment
Я чувствую, что это дубликат emacs.stackexchange.com/q/4253   -  person phils    schedule 18.06.2017


Ответы (3)


На одном уровне это довольно легко сделать. Однако, в другом, могут быть некоторые сложности, в зависимости от того, что вы действительно хотите сделать.

Emacs поддерживает ключ командной строки -l, чтобы сообщить emacs, где найти файл конфигурации. Таким образом, с очень простой точки зрения вы можете просто создать два скрипта-оболочки my-spacemacs.sh и my-plainemacs.sh, и внутри них скрипты будут вызывать emacs с определенным параметром -l /path/to/config. Вы можете передать $*, чтобы получить другие аргументы командной строки, если хотите.

Потенциальная проблема с этим подходом заключается в том, что emacs по-прежнему будет использовать .emacs.d для хранения всех видов другой информации, включая, возможно, пакеты elpa, и это может вызвать проблемы. Чтобы быть в большей безопасности, лучше хранить вещи отдельно друг от друга.

Если вам не нужно запускать обе версии одновременно, простое решение состоит в том, чтобы разделить каталоги, такие как ~/.spacemacs-emacs.d и ~/plain-emacs.d, а затем создать символическую ссылку с именем .emacs.d, который указывает на любую версию, которую вы хотите запустить. Две основные проблемы с этим подходом заключаются в том, что вам нужно сбрасывать символическую ссылку всякий раз, когда вы хотите изменить варианты emacs, и это не сработает, если вы хотите запустить обе версии одновременно.

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

Например, я использую режим org и babel для управления конфигурацией emacs. У меня есть несколько разных версий и простой скрипт, который я могу запустить для создания любого файла init.el, который я хочу, из разных файлов org. У меня есть файл Minimum.org, который имеет самую минимальную конфигурацию emacs, которую я могу обнажить, и у меня есть мой стандартный init.org, который генерирует мой рабочий init.el, а затем у меня есть Experiment.org, который используется для создания init.el файл, который я использую для экспериментов с новыми конфигурациями или пакетами. Переключение конфигураций тривиально, но мне никогда не нужно запускать две разные конфигурации одновременно.

Мне часто нравится проверять некоторые другие предварительно подготовленные настройки emacs, такие как spacemacs, prelude и т. д. Для них я просто беру текущую версию git и использую символическую ссылку, чтобы указать .emacs.d на корень для git репо, с которым я хочу поэкспериментировать.

person Tim X    schedule 18.06.2017

вы также можете использовать следующий подход:

создайте каталог ~/spacemacs. извлеките/скопируйте файл spacemacs .emacs.d в ~/spacemacs (чтобы это был ~/spacemacs/.emacs.d). создайте ссылку на рабочий стол под названием Spacemacs (или пункт меню) и введите следующую команду:

    HOME=$HOME/spacemacs emacs

Вы также можете запустить spacemacs из оболочки с помощью этой команды. Таким образом, вы можете одновременно запускать vanilla emacs и spacemacs, каждый со своим собственным каталогом конфигурации и репозиторием elpa. Единственным недостатком может быть то, что вам нужно изменить уровень каталога вверх, чтобы добраться до вашего реального домашнего каталога, а не «поддельного», установленного через переменную. Кстати, именно так я запускаю несколько версий и конфигураций emacs по мере необходимости для разных вещей.

person kuli    schedule 20.10.2017
comment
Переопределение $HOME нарушит работу многих программ, которые на него полагаются. - person xophos; 19.02.2018

Кажется, лучшим решением является использование chemacs: https://github.com/plexus/chemacs

person Mauricio Calvao    schedule 19.05.2020