Как узнать, запущен ли сервер emacs - PullRequest
15 голосов
/ 14 сентября 2010

Я хотел бы выполнить некоторый код в моем файле инициализации, только если запущен сервер emacs (особенно, если emacs запускается с флагом --daemon).Кажется, что при вызове server-start не работает какой-либо хук, и нет никакой переменной, на которую я могу посмотреть, чтобы проверить, работает ли сервер.Функция сервера не загружается, если сервер не запущен, и это, похоже, работает для моих целей, но я хотел бы знать, каков правильный способ сделать это.Спасибо.

Ответы [ 2 ]

16 голосов
/ 14 сентября 2010

Если процесс сервера запущен, связанный объект процесса - server-process. Проверка, если server-process не ноль, говорит вам, должен ли сервер работать; Вы можете проверить его статус, чтобы убедиться, что он находится в приемлемом состоянии.

(and (boundp 'server-process)
     (memq (process-status server-process) '(connect listen open run)))

Вы можете проверить, вызывался ли Emacs как демон, с помощью (daemonp).

1 голос
/ 22 мая 2013

Обновление: код, выложенный Жилем, выдает, если в буфере нет процесса, например «Буфер нуля не имеет процесса». Когда этот код используется в ~ / .emacs.el , мы рискуем не запускать Emacs. Чтобы поймать ошибку:

(defun --running-as-server ()
    "Returns true if `server-start' has been called."
  (condition-case nil
      (and (boundp 'server-process)
           (memq (process-status server-process)
                 '(connect listen open run)))
    (error)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...