Emacs "start-server" не меняет переменную "server-mode"

623
SabreWolfy

Я использую 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
Taras

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

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

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

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

Похожие вопросы