50

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

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

(server-start)

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

set editor="emacsclient -nw %s"

彼らは働いているようです。2番目のEmacsを起動すると、サーバーがすでに実行されていると文句を言うので、エラーが発生します。(server-start)サーバーがまだ起動されていない場合にのみ実行するようにするにはどうすればよいですか?

ありがとう

4

5 に答える 5

68

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

(load "server")
(unless (server-running-p) (server-start))
于 2011-04-06T19:35:49.313 に答える
54

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

export ALTERNATE_EDITOR=""

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

このシェルエイリアスも便利だと思います:

alias e='emacsclient --tty'

Emacs 23 以降、デーモン モードで Emacs を使用する場合、これが推奨される方法であることに注意してください。(start-server)現在はほとんど非推奨です。

于 2011-04-07T09:14:59.733 に答える
15

少し遅い答えですが、これが私にとって有効な解決策です。emacsclient を起動するたびに、 emacsclient に既存emacsclient -a '' -c-a ''サーバーへの接続を試み、サーバーが存在しない場合はサーバーを起動してから接続するように指示します。

于 2014-02-04T14:59:12.573 に答える
8

を介して問題を完全に回避します

emacs --daemon

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

これは Emacs で、必要なときだけサーバーを起動する機能もありますが、その名前を今は思い出せません。--daemon私自身、このオプションを非常に喜んで使用しています。

于 2011-04-06T17:27:04.593 に答える