somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Emacs】起動しているEmacsにアクセスする

Emacsを再びたちあげずに、起動しているEmacsにアクセスする方法についてのメモです(NTEmacs)。

Firefox(KeySnail)から

KeySnailには、テキストを入力できるフォームに対して直接入力するのではなく、外部エディタを用いて入力することができます。他のアドオンでもできるようです。

問題点

最初は、runemacs(コマンドプロンプトから非同期で実行されるEmacs)を指定していました。これは、いつもどおりEmacsを起動していることと同じです。ただし、何個もEmacsが立ち上がってしまいます。Emacsは起動(設定の読み込み)に時間がかかるため、面倒になってしまいます。

emacsclient

ここから解決法の紹介です。下記設定を追加し、起動しているEmacsにアクセスできるようにします。

;; 起動しているEmacsにアクセスする
(server-start)

最低限の設定はこれだけです。Emacsを再度起動します。

KeySnailから起動するエディタをemacsclient.exeに変更し、KeySnailから実行すると元々起動していたEmacsにバッファが追加されています。ミニバッファには、下記メッセージが表示されます。

When done with a buffer, type C-x #

C-x cではなく、違うキーバインドになっています。C-x #はserver-editが割り当てられています。server-だけ覚えていれば、忘れてしまっても問題なさそうです。

また、当たり前ですがserverとなるEmacsを起動せずにclinetは起動できません。

emacsclientw.exe

ここまででも問題ありませんが、おまけです。emacsclientに変更したことで1つのEmacsで編集をすることができるようになりましたが、コマンドプロンプトが立ち上がり、下記メッセージが表示されていました。

Waiting for Emacs...

起動するclientをemacsclientw.exeに変更すると、コマンドプロンプトは表示されなくなりました。