私が知っている限り、emacsの起動を高速化する1つの方法は、emacs --daemon
ログイン時に実行してからemacslient
ファイルを開くことですemacs
。これにより、新しいemacsインスタンスを作成するのではなく、実行中のemacsサーバーにアクセスできます。
ただし、必要な場合を除き、ログインプロセスを高速化するためにプログラムを自動起動に入れないことをお勧めします。 emacsサーバーが稼働しているかどうかを検出する安定した方法はありますか?これにより、Emacsを使用して初めてファイルを開くときにEmacsサーバーを生成する簡単なスクリプトを作成できます。
#!/bin/sh
if emacs_daemon_is_not_running # <-- How do I do this?
then
emacs --daemon
fi
emacsclient -c "$@"
答え1
emacsがすでに実行されているかどうかをテストする必要さえありません。emacsclient
まだ実行していない場合は、emacsデーモンを起動できます。からemacsclient(1)
:
-a, --alternate-editor=EDITOR
if the Emacs server is not running, run the specified editor
instead. This can also be specified via the `ALTERNATE_EDITOR'
environment variable. If the value of EDITOR is the empty
string, run `emacs --daemon' to start Emacs in daemon mode, and
try to connect to it.
私はge
、次のように定義されたエイリアスを使用してファイルを編集します。
alias ge="emacsclient -c -n --alternate-editor=\"\""
答え2
emacsclient
それ自体を使用して接続があるかどうかをテストできます。
#!/bin/sh
if ! emacsclient -e 0 >&/dev/null
then emacs --daemon
fi
emacsclient -c "$@"
-e 0
計算式「0」を表し、0のみを印刷します。 emacsclientがサーバーに接続できない場合、戻りコードは0ではありません。
答え3
これをシェル関数またはスクリプトに入れることができます。
if ! ps h -o pid,args -C emacs | grep -q -- --daemon ; then
emacs --daemon
fi
emacsclient -c "$@"
ps
これは、標準のLinuxパッケージprocps
のパッケージを使用していると仮定します。どちらかを使用すると、ps
正確なオプションが異なります。
答え4
以下を使用してps
これを実行できますor
。
ps -e -o args | grep -qE 'emacs --(bg-|)daemon' || emacs --daemon
インスピレーションを受けて答えcas
てみてください。hugomg