Как я могу запустить Mac OSX с графическим Emacs в режиме демона?

24

Краткая форма: я хочу запустить версию Emacs для Mac OSX, найденную на http://emacsformacosx.com/, в качестве демона, с графическими и текстовыми клиентами, подключающимися к нему по мере необходимости.

Подробно, вот рабочий процесс, который я хочу:

  1. При входе в систему запустите /Applications/Emacs.app/Contents/MacOS/Emacs --daemonemacs как демон. Я уже знаю, как это сделать .

  2. Когда я запускаю emacs из локального терминала, я хочу один из них:

    1. Если я запускаю emacsиз локальной командной строки, откройте новый фрейм с выбранным файлом.
    2. Если # 1 невозможно, по крайней мере, если я запускаю emacsclientиз командной строки, откройте новый кадр с выбранным файлом.
  3. Когда я запускаю emacs с удаленного терминала, я хотел бы запустить emacs в текстовом режиме, подключенный к процессу демона.

  4. Если я запускаю, Emacs.appповторно используйте демон emacs, работающий в фоновом режиме, вместо запуска нового экземпляра и открывайте в нем новое окно.

До сих пор я могу выполнить только # 1 и # 2.2 выше, но это простые части. # 3 и # 4 - вещи, которые больше всего нужны для того, чтобы эта работа работала. Кто-нибудь знает, как этого добиться?

Крис Р
источник
1
Для тех, кто находит этот вопрос: вы также M-x server-startможете перевести emacs, запущенный без, --daemon в режим сервера. Хорошие вопросы, кстати.
dmckee
1
... или вставьте (server-start)свой .emacs, чтобы он запускался при запуске emacsa
Даг Харрис,
Может кто-нибудь объяснить, как это сделать # 1? Вы бы просто сделали это элементом входа?
Чарли Флауэрс
1
@Charlie Flowers emacswiki.org/emacs/EmacsAsDaemon#toc5
Колин

Ответы:

15
  1. Вы получили это обработано
  2. Да, вы хотите использовать emacsclient. Чтобы получить новый кадр, добавьте опцию -c. У меня есть псевдоним, чтобы ускорить его и сказать emacsclient не ждать возврата сервера emacs:

    alias em='emacsclient -n'
    
  3. emacsclient -nw
  4. Я не уверен в этом. Я запускаю Emacs один раз и всегда загружаю новые файлы либо внутри emacs, либо используя мой emпсевдоним.

Обновить:

Посмотрите этот совет, описывающий, как использовать Platypus для создания оболочки приложения вокруг emacsclient. Затем вы можете использовать «Открыть с помощью…» для запуска, используя новую оболочку приложения.

Даг Харрис
источник
Да, это настоящий трюк, не так ли? Потому что я хочу, чтобы все открытые вызовы ОС использовали работающий emacs, работаю ли я в терминале или в контексте графического интерфейса. Я буду продолжать искать.
Крис Р
Нашел ссылку на Утконос и обновил мой ответ.
Даг Харрис
6
Это решено? Как вы получили Emacs.app для подключения к демону?
milkypostman
Я также хочу знать ответ на вопрос 4 :)
JKP
2

Да, вот довольно подробное объяснение того, как сделать это красиво. Я попробовал несколько методов, чтобы это работало хорошо, но не лучше, чем они описали здесь.

https://gist.github.com/304964

Ура!

колос
источник
1
Ссылка мертва
нисба
1

Для 4. Поместите это в ваш .emacs:

(setq ns-pop-up-frames nil)

Решение по созданию Mac .app (с Platypus) не работает, потому что Mac не будет открывать одно и то же приложение дважды.

juanmirocks
источник
1
Если вы используете «open -n», вы можете открыть новый экземпляр приложения, даже если оно уже запущено. Попробуйте это в терминале: откройте -n -a Emacs.app somefile.txt
Йорген Лундберг
Да, но он открывает новое окно, которое я не хочу
juanmirocks
Может быть, я неправильно понимаю, что вы хотите, но если вы не хотите, чтобы оно создавало новое окно, а использовало существующее, пропустите '-n'.
Йорген Лундберг
Да, я не хочу создавать новое окно. open -a Emacs.appэто, конечно, то, что я делаю, но чтобы открыться в том же фоне экземпляра / демона существующего emacs, мне нужно написать (setq ns-pop-up-frames nil)в моем, .emacsкак я написал в своем ответе. В противном случае он создает новое окно в любом случае, с или без -n.
июня