Hatena::ブログ(Diary)

gan2 の Ruby 勉強日記 このページをアンテナに追加 RSSフィード

この日記のはてなブックマーク数 PV/ 823944 スカウター : gan2 の Ruby 勉強日記 Subscribe with livedoor Reader 役立つリンク集

2008-02-22

emacsclient の雑多な設定

elscreen と emacsclient をいっしょに使っている状態で、ちょっと内容だけ確認してその後すぐに移動させたいファイルがあるときに、そのファイルのスクリーンで C-z k すると、スクリーンは消えるけどバッファは残っているので、ファイルを移動しようとすると Windows に怒られる。

このとき、閉じ忘れたバッファを閉じにいくのが面倒なのでなんとかしたいと思った。


elscreen のソースを覗いてみたら、elscreen-kill-screen-and-buffers とかそのものずばりな機能があることを見つける。

デフォルトのバインドは C-z M-k。

あーね。これを使えばいいわけね。

でも M-k っていうのがちょっと面倒だ。

オートセーブしてるからあんまり困ることなさそうだし、スクリーン消すときはバッファも一緒に消えるのをデフォルトにしちゃおう。

ってなわけで、elscreen-kill の代わりに elscreen-kill-screen-and-buffers を使うことにする。

;; キーバインドの変更
(define-key elscreen-map "\C-k" 'elscreen-kill-screen-and-buffers)
(define-key elscreen-map "k" 'elscreen-kill-screen-and-buffers)

うむ。これで前述の面倒な問題は解決した。


でも emacsclient で開いたファイルをキルしようとすると警告が出てくるのがちょっと嫌だ。

C-x # してないから言われるんだろうなぁ。

じゃあってことで少しさっきのスクリプトを書き直してみる。

;; キーバインドの変更
(define-key elscreen-map "\C-k" 'my-kill-screen-and-buffers)
(define-key elscreen-map "k" 'my-kill-screen-and-buffers)
(defun my-kill-screen-and-buffers ()
  (interactive)
  (server-edit)
  (elscreen-kill-screen-and-buffers)
  (message ""))

elscreen-kill-screen-and-buffers の前に C-x # (server-edit) を呼び出すようにしてみた。

これで警告が出なくなった。


ほんとは emacsclient 経由で開いてるファイルを閉じるときだけ C-x # すべきなんだろうけど、場合分けのやり方がよく分からない。

場合分けをしてないから、普通に Meadow から開いたファイルを閉じるときに「No server editing buffers exist」ってメッセージが出る。

でも上述のスクリプトでは、最後に空のメッセージを送ることで見かけ上は何事もなかったかのように振る舞うようにしてある。

まあこれで十分か。

あ。emacsclient でファイル開いたときに M-x list-processes すると status が listen な server プロセスが出てくるから、場合分けにはたぶんこれを利用するんだろうなぁ。


あと emacsclient をコンテキストメニューの「送る」から指定できるようにしておいた。

これは、C:\Documents and Settings\[ユーザ]\SendTo に gnuclientw.exe のショートカットをおけば OK。


参考


関連

gnuserv を使って Meadow で様々なファイルを開く - gan2 の Ruby 勉強日記

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証