トップ «前の日記(2007-04-08) 最新 次の日記(2007-04-14)» 編集

2007-04-11 [長年日記]

_ screen + emacs c/s 生活始まる

以前 mule-ucs を使いたくなくてしょうがないという話を書いたけれども、どうしても mule-ucs を使わなくてはいけないシーンが出てきた。泣ける。

このクソ重たい起動を待つことはできない。終了しないで使えばいいと言ったって、こちとらすべての作業を Emacs の中で行えるほどの強者ではない。しかしそこでピンときた。

「Emacs ってサーバにならなかったか?」

そうです。なるんです。

M-x server-start

するだけで Emacs はサーバとして待機するようになります*1。クライアント側は

emacsclient FILENAME

するだけ。サーバ動作している Emacs で

C-x #

すると emacsclient に編集終了を教えることができるので、例えば w3m + emacsclient なんて使い方も可能。(ただしこれではファイルを閉じないので、閉じるのであれば普通に C-x k の方がよい。閉じる際にクライアントが居るけどいいか?と聞かれるので、そのまま閉じてしまえばよい。)

しかし再び問題が。

Emacs のセッションを emacsclient を叩いた画面で拝めるわけではない。

Emacs の client/server のイメージ

のであった。要するにサーバとして動いている Emacs の画面は出しっぱなしにしておかなきゃいけないってこと。emacsclient を起動した画面は 「Waiting for Emacs...」と言ったきり黙りこくってしまうのだ。これは嬉しくない。まぁ幸いなことにこの mule-ucs を使わなきゃいけない Emacs は手元の localhost で動かすわけじゃないので、Emacs 用の screen window も一緒に動かし続ければいいんだな。

ただ、単純に screen を起こすだけでは screen -ls したときにどれが Emacs の動いている screen か分からない。そこで今度は screen 上で

:sessionname emacs-server

って打ってやる。そうすると

There is a screen on:
       24693.emacs-server      (Attached)

みたいに人間が識別できるようになる。この session を dettach/attach してやればよい。現在の screen の session name を確認したい場合は引数を与えずに

:sessionname

と打つ。

面倒でも、mule-ucs の起動を待つよりマシなのだ!

[追記] ついでに、エディタとしてしか使っていなかったことを反省してちょこちょこ試してみた。期待通り M-x calc と M-x calendar は存在していた。なるほどな。便利便利。というか bc があるんだからわざわざ OSX の電卓起こすことなかったんだよな。よしよし。トシを取ってもたまには環境を見直さないとね :-)

あ。ちなみに、vc-svn は使えている。vc-svn のために 22 にしたいと思っている人はよく調べてみた方がいい。

Tags: Emacs Screen

*1 UNIX ソケットを使える場合の話。Windows で Meadow な場合は UNIX ソケットは使えないので gnuserv が必要です。XEmacs とか GNU Emacs じゃないやつもそうなのかも。そこまでは試していないので分かりません。