2

Я использую Emacs 23 в Debian Squeeze. ~/.emacs не содержит никаких связанных с server команд.

Я запускаю Emacs и захожу в C-h v server-mode , который возвращает nil , так как ни один сервер не работает. Затем я ввожу M-x start-server , который запускает сервер Emacs в работающем экземпляре Emacs.

Однако, переменная server-mode все еще равна nil когда я проверяю это снова. Только после запуска M-x server-mode переменная server-mode получает значение t . Это ошибка или я что-то не так делаю?

Режим сервера работает нормально после входа в start-server ; Я могу использовать emacsclient чтобы открыть файл на сервере Emacs. Однако я хотел использовать переменную server-mode в строке режима, чтобы указать, работает ли сервер, но если запуск сервера с помощью start-server не изменяет значение режима server-mode , это не будет работать должным образом.

2 ответа2

3

Лучшим способом является использование (server-running-p) из server пакета. Например

(require 'server)
(unless (server-running-p)
    (server-start))
1

Чтобы получить необходимую / ожидаемую функциональность (от недавно запущенного Emacs), я запускаю M-x server-mode для запуска сервера, а не server-start . Запуск сервера таким способом изменяет значение переменной server-mode на t .

Я не понимаю, почему запуск сервера с задокументированным server-start не устанавливает переменную server-mode в значение t .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .