以前も書いたけど、最近は Emacs をフルスクリーンにして左右に分割し、左側に実行用のコード、右側にユニットテストのコードを並べて TDD を行ったりしている。
ただ、いったん分割を解除して、再分割をしたときに、左側にユニットテスト、右側に実行コードが表示されちゃう場合がある。意識して分割・バッファ読み込みをすれば、そんなことはないんだろうけど、手が覚えている手順で再分割・再読み込みをすると、逆になっちゃうときがあるんだよね、これが。
そういうときは、両方のウインドウでバッファ切り替えをするんだけど、これがちょっと面倒くさく感じてきた。ということで、分割したウインドウのバッファを入れ替えるコマンド swap-buffers
を作ってみた。
いろいろ怪しげな部分はあるんだけど、左右分割のバッファを入れ替えることはできている。
まず、左のウインドウに a.txt
、右のウインドウに b.txt
を表示している状態のフレームがあるとする。
この時、M-x swap-buffers
を実行する。オレは M-x
を helm-M-x
に入れ替えてるので、そういう表示になっているけど、そこら辺は気にしないで良いよ。
そして、実行すると、次のように左に b.txt
右に a.txt
となり、期待通りに入れ替わっている。
キーバインドを C-x \
に定義しているので、もちろんそのキー入力でも実行できる。
さっき「怪しげ」と書いたのは、いくつかの理由がある。
(get-lru-window)
でいいの?という不安ネームスペースと言っても prefix を付けるだけなので、 my-
とか付けちゃえば良いわけだけど、my-
はイマイチだなぁと思いつつ、他に良いものが思いつかずにいまのところナシにしちゃっている。
3分割以上の場合、どことどこを入れ替えるべき?という定義の問題もあって、どうしようかなぁというところ。まぁ、左右入れ替えがオレのニーズなので、それが実現できれば OK なので、しばらくはこのままなのかも。。。
(get-lru-window)
が正しいのかどうかは、、、もうちょっと Emacs Lisp のリファレンスをしっかり読まないと良く分からない。
あと、なんか、こういったニーズは、割とみんな持ってるんじゃない?と思っていて、既にこれを解決するソリューションがありそうな気がしている。更には Emacs のデフォルトで存在していてもおかしくないと思っている。
しかし、もうちょっとスマートに Emacs Lisp を書けるようになりたいなぁ。まだまだマニュアルとにらめっこしないと分からない部分が多い。