さらに、サーバーをバッチモードで起動する必要はありません。したがって、私の.emacsでは
(defconst --batch-mode
(or noninteractive (member "--batch-mode" command-line-args))
"True when running in batch-mode (--batch-mode command-line switch set).")
その後
(unless --batch-mode
(require 'server)
(when (and (= emacs-major-version 23)
(= emacs-minor-version 1)
(equal window-system 'w32))
;; Suppress error "directory ~/.emacs.d/server is unsafe" on Windows.
(defun server-ensure-safe-dir (dir) "Noop" t))
(server-start))
それでもサーバー機能は気まぐれです:%HOME%/。emacs.d/serverディレクトリが存在しない場合server-start
にスローされます。続けて、Emacsは再び起動しません!明らかな解決策は、欠落しているディレクトリを作成して再試行することです。ネットのどこかで解決策を見つけましたが、どこにあるのか本当に思い出せません。次のコードは、私のWindowsマシンのいくつかで何年も正常に実行されています。
(unless --batch-mode
(require 'server)
(when (and (= emacs-major-version 23)
(= emacs-minor-version 1)
(equal window-system 'w32))
;; Suppress error "directory ~/.emacs.d/server is unsafe" on Windows.
(defun server-ensure-safe-dir (dir) "Noop" t))
(condition-case nil
(server-start)
(error
(let* ((server-dir (if server-use-tcp server-auth-dir server-socket-dir)))
(when (and server-use-tcp
(not (file-accessible-directory-p server-dir)))
(display-warning
'server (format "Creating %S" server-dir) :warning)
(make-directory server-dir t)
(server-start))))
)
)
このコードは、スティックからEmacsを実行するときにも機能します。
お役に立てれば。