Как запустить сервер emacs только в том случае, если он не запущен?
Я хотел бы использовать emacsclient для редактирования писем в Mutt.
Я добавил это в .emacs
(server-start)
И в .muttrc я добавил
set editor="emacsclient -nw %s"
Кажется, они работают.
Когда я запускаю второй Emacs, он жалуется, что уже работает сервер, поэтому он выдает ошибки. Как сделать (server-start)
только в том случае, если сервер еще не запущен?
Спасибо
Ответы
Ответ 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
счастливо довольно счастливо.