gudを使った後にwindowの状態を元に戻す
何ヶ月かに一回訪れる、PC欲しい病が発生しています。なんでこんな時期に。
まぁボーナスなんて出ない(多分)ので、みーてーるーだーけー、という感じではありますが、ITmedia+Dで見たこの記事<http://plusd.itmedia.co.jp/pcuser/articles/0906/05/news037.html>を見て、やべぇ欲しいとか思ってしまいました。
しかもつい最近、外部GPU付きで10万とかいうらしく、性能的には必要十分です。
・・・しかし手元にはすでにMacBook(2008 unibody)が。
確かに、MacBook買った当初はMacばっかり利用していましたが、現在デスクトップに完全なLinux環境(GentooLinux & ratpoison & mlterm)を構築したところ、あまりに快適すぎて、Macが快適じゃなくなってしまったというなんじゃそりゃ的な状態に。
いまやMacでうらやましいのは、通知領域(多分ratpoisonでも工夫すればできるような)くらいです。いや本当。Dockなんていらんですよ。あれよりだったらWindows 7のタスクバーの方が高性能になっちゃいましたし。(Windows 7は実際かなりよかですよ。でも今の環境と比べちゃねぇ・・・)
まぁ、Macに馴染めなかったのは、中身がBSD/Unixだったからという説も。Gentooとディレクトリ構成とか作法が違いすぎて覚えれんですたい。
で、一度このMacbookにUbuntuとか(これ挫折)Gentooとか(これは出来た)入れてみたんですが、こんどは発熱とバッテリーのもたなさに辟易。そしてなにより、MacBookの独特なハード構成のせいで、普通は動くようなものが動かないという素敵な事態が。
色々工夫することで、(多少は)逃れられるようですが、やはり発熱はいかんともしがたく。パームレストにまで熱が普通に来ます。
Mac上になんとかして環境を構築しようとしても、なんか色々な面で面倒が起きてしまい、なんかグダグダに。
というわけで頭に戻って、つまりは持ち運べるLinux環境が欲しいってことですね。
気付いたらタイトルとなんも関係の無い話でした。脱線にも程がある。
さて、最近私はC++でこそこそと物を作っていて、当然の如くEmacs上で開発してます。
で、C++で作ったものをテストして、原因がよくわからん時にはgdbの力を借りますよね。M-x gdb は心強い友人ですよ。
(setq gdb-many-windows t)
とかやっておくと、gdbが、gudというものと一緒に立ち上がるようになります。
これやると、ウィンドウが上下左右分割されて、さながらGUIクライアントみたいになります。
これはこれで便利?なんですが(バッファ移動が以外と面倒&それぞれキーバインドがあって覚えにくい)、これを終了(DebuggerバッファをC-x k)したとき、前の状態に戻ってくれりゃいいのに、なぜか戻ってくれません。
自分的には、常に終了時にはウィンドウの分割状態を戻しておいて欲しいので、こんなん書いてみました。
(when gdb-many-windows (defvar my-gud-window-configuration nil) (add-hook 'gud-mode-hook '(lambda () (setq my-gud-window-configuration (current-window-configuration)))) (add-hook 'kill-buffer-hook (lambda () (when (string-match " \*gud-.+" (buffer-name (current-buffer))) ;; gud-関係の場合 (when (window-configuration-p my-gud-window-configuration) (set-window-configuration my-gud-window-configuration) (setq my-gud-window-configuration nil)))))
やってることは単純で、gdb-many-windowsがtなら、gudが起動する時に、
windowの分割状態を保存して、kill-buffer時、バッファ名が *gud-*だっ
たら、ウィンドウの分割状態をもとに戻す、ということをやっているだけ
です。
これだけでも大分使いやすくなります。後はspeedbarがなんとかならない
かなぁ。