Как я могу запустить 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? Вы бы просто сделали это элементом входа?
Чарли Флауэрс

Ответы:


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 не будет открывать одно и то же приложение дважды.


1
Если вы используете «open -n», вы можете открыть новый экземпляр приложения, даже если оно уже запущено. Попробуйте это в терминале: откройте -n -a Emacs.app somefile.txt
Йорген Лундберг

Да, но он открывает новое окно, которое я не хочу
juanmirocks

Может быть, я неправильно понимаю, что вы хотите, но если вы не хотите, чтобы оно создавало новое окно, а использовало существующее, пропустите '-n'.
Йорген Лундберг

Да, я не хочу создавать новое окно. open -a Emacs.appэто, конечно, то, что я делаю, но чтобы открыться в том же фоне экземпляра / демона существующего emacs, мне нужно написать (setq ns-pop-up-frames nil)в моем, .emacsкак я написал в своем ответе. В противном случае он создает новое окно в любом случае, с или без -n.
июня
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.