Подтвердить что ты не робот

Как запустить сервер emacs только в том случае, если он не запущен?

Я хотел бы использовать emacsclient для редактирования писем в Mutt.

Я добавил это в .emacs

(server-start)

И в .muttrc я добавил

set editor="emacsclient -nw %s"

Кажется, они работают. Когда я запускаю второй Emacs, он жалуется, что уже работает сервер, поэтому он выдает ошибки. Как сделать (server-start) только в том случае, если сервер еще не запущен?

Спасибо

4b9b3361

Ответ 1

Демон emacs можно запустить автоматически очень простым способом. Просто добавьте это в свой .bashrc/.zshrc/whatever

export ALTERNATE_EDITOR=""

Теперь, когда вы вызываете emacsclient -t/-c, сервер будет запущен (с emacs --daemon), если он еще не запущен.

Я также нашел этот псевдоним оболочки

alias e='emacsclient -t'

Обратите внимание, что с Emacs 23 это предпочтительный способ использования Emacs в режиме демона. (start-server) теперь больше не рекомендуется.

Ответ 2

Этот код запускает сервер только в том случае, если он не работает:

(load "server")
(unless (server-running-p) (server-start))

Ответ 3

Немного позднего ответа, но вот решение, которое работает для меня. Всякий раз, когда я запускаю emacsclient, я использую emacsclient -a '' -c. -a '' указывает emacsclient попытаться подключиться к существующему серверу, и если сервер не существует, запустите его, затем подключитесь к нему.

Ответ 4

Избегайте проблемы alltogether через

emacs --daemon

в любой оболочке или терминале, чтобы Emacs работал в фоновом режиме. Таким образом, emacsclient всегда счастлив, так как всегда есть сервер Emacs для подключения.

Это Emacs, есть функция, которая запускает сервер только тогда, когда это необходимо, но я не могу полностью вспомнить его имя прямо сейчас. Я использую вариант --daemon счастливо довольно счастливо.