Emacsclientに関してまとまった情報が見つからなかったので(というかEmacs全般に言えると思います)、自分で書きました。
Emacsclientとは?
Emacsclientを使うとEmacsの起動時間を大幅に短縮できます。どういう仕組みかというと、Emacsサーバーを建てておき、サーバーを起動したままにすることで設定読み込み時間をなくします。
起動方法
$ emacs --daemon
で起動します。その後普通に$ emacs hoge.txt
で編集を行います。気をつけるべき点はC-x C-cで終了しない(SpacemascでいうとSPC q q
をしない)ことです。これで終了してしまうとサーバーも終了してしまいます。サーバーを起動したままEmacsを抜けることが重要です。
サーバーを起動したまま抜ける
サーバーを殺さず抜けるにはC-x #
を押します。Spacemacsで同等の動作をするものがどれかわかりませんでしたが、とりあえずSPC q z
するとサーバーを起動したまま抜けられます。
絶対にC-x C-c
、SPC q q
をしないようにしましょう。
emacsclientに関する諸設定
[Emacs] emacsclient を快適に使うための設定とemacsclientを使ってEmacsの起動を速くするを参考に最強の設定をつぎはぎしました。
以下をbashrc/zshrcに適当に継ぎ足してください。
function estart() { if ! emacsclient -e 0 > /dev/null 2>&1; then ({ cd emacs --daemon cd - } > /dev/null 2>&1 & ) fi } estart # シェル起動時にEmacsデーモンも起動する alias ekill="emacsclient -e '(kill-emacs)'" alias erestart="ekill && estart" alias e="emacsclient -nw -a ''" alias emacs="emacsclient -nw -a ''" export EDITOR="emacsclient -nw -a ''"
元記事から、estartの出力をすべて消してバックグラウンドでデーモンを起動するように若干変更をしてあります(許可をいただいてあります)。
補足: emacsclientのオプションについて
emacsclientの各オプションについて解説します。
-nw
端末内でEmacsを開く-a
デーモンが起動していないときに使うエディタを指定する。デフォルトはデーモンを起動してエディタとする-e
Emacs Lispとして評価・実行します。
たとえばemacsclient -nw -a ''
は「ターミナル内でEmacsを開く。ただし、デーモンが起動していなければ起動して開く」となります。これでデーモンが起動していなくてもそのまま編集することができます。ただ、端末起動時にデーモンが起動するのであまり使いませんが。