2014-01-04 3 views
1

Фон: Использование Emacs 24.2.1.Обновить .emacs на сервере emacs без закрытия текущих клиентов emacs

Я начинаю Emacs клиент и сервер с этим псевдонимом:

emacsclient -nw -a="" -c "[email protected]" 

Я хочу, чтобы перезагрузить мой .emacs файл после того, как я обновлю его без сервера Emacs прекратить текущих клиентов. В принципе, прямо сейчас, я бы отредактировал файл .emacs, используя emacsclient. Затем я делаю M-x load-file. Затем он спрашивает

The current server still has clients; delete them? (yes or no) 

Высказывания да будет перезагрузить файл .emacs, но и завершить все текущие клиент, что заставляет мой клиент закрыть, так как он только что завершен.

Есть ли обходной путь для этого?

+0

На самом деле, после того, еще какое-то мастерить я узнал, что было не так. У меня был (сервер-старт) как первая строка в моем файле .emacs, что не нужно, так как я вызываю emacsclient. В результате первое действие, которое требуется выполнить, - перезагрузка сервера. Тупая ошибка. – narcoleptical

ответ

1

Единственное место, где я мог бы найти это сообщение в исходном коде Emacs находится в функции server-start:

(defun server-start (&optional leave-dead inhibit-prompt) 
... 
    (when (or (not server-clients) 
      ;; Ask the user before deleting existing clients---except 
      ;; when we can't get user input, which may happen when 
      ;; doing emacsclient --eval "(kill-emacs)" in daemon mode. 
      (cond 
      ((and (daemonp) 
        (null (cdr (frame-list))) 
        (eq (selected-frame) terminal-frame)) 
       leave-dead) 
      (inhibit-prompt t) 
      (t (yes-or-no-p 
       "The current server still has clients; delete them? ")))) ... 

Я бы предположить, что вы выполняете server-start где-то в вашем .emacs и что это вызывает проблема. Если это так, вы должны удалить выражение и перезагрузить .emacs должны работать так, как вы ожидали.

PS: Я бы отправил комментарий, но я не позволил сделать это, поэтому я пишу ответ :)

Смежные вопросы