web-dev-qa-db-ja.com

emacsサーバーが起動していない場合にのみ起動する方法は?

Emacsclientを使用してMuttでメールを編集したいと思います。

これを.emacsに追加しました

(server-start)

そして.muttrcに私は追加しました

set editor="emacsclient -nw %s"

彼らはうまくいくようです。 2つ目のEmacsを起動すると、サーバーが既に実行されているため、エラーが発生するというメッセージが表示されます。確認する方法(server-start)サーバーがまだ起動されていない場合のみ?

ありがとう

45
Meng Lu

Emacsデーモンは、非常に簡単な方法で自動的に起動できます。これを.bashrc/.zshrc/whateverに追加するだけです

export ALTERNATE_EDITOR=""

emacsclientを呼び出すと(--ttyまたは--create-frameのいずれかを使用して)、サーバーがまだ実行されていない場合は(emacs --daemonで)起動されます。

このシェルエイリアスも便利です。

alias e='emacsclient --tty'

Emacs 23以降、これはデーモンモードでEmacsを使用するための好ましい方法です。 (start-server)は現在ほとんど使用されていません。

50
Bozhidar Batsov

このコードは、サーバーが実行されていない場合にのみサーバーを起動します。

(load "server")
(unless (server-running-p) (server-start))
61
Philipp

少し遅い答えですが、ここで私のために働く解決策があります。 emacsclientを起動するときはいつでも、emacsclient -a '' -c-a '' emacsclientに既存のサーバーへの接続を試行するよう指示します。サーバーが存在しない場合は、サーバーを起動してから接続します。

12
Eldritch Cheese

一緒に問題を回避する

emacs --daemon

emacsがバックグラウンドで実行されるように、任意のシェルまたはターミナルで。この方法では、接続するEmacsサーバーが常に存在するため、emacsclientは常に満足しています。

これはEmacsであり、必要なときにのみサーバーを起動する関数もありますが、今のところその名前を思い出すことはできません。 --daemonオプションは、私自身も非常にうれしいです。

7