ソースとデバッガを並べたい(rdebug.el)

デバッガを使える様になろうと、まずはツールから物色中。

それで、rdebug(ruby-debug)をEmacsから使ってみることにしたわけですが、デバッガの普通な使い方を知らないので、ソースが見えなくて何をしていいのかわからなくなります(listで周辺ソースが見られるのはわかりました)。

そんな状態なので、左にソース、右にデバッガという状態を作りたいなと思ったわけです。

Googleから、rdebug.elというそれっぽいelispを見つけました。"M-x rdebug"でrdebugがEmacs上で起動します。それっぽいです。

ただ、1面ウィンドウの状態から起動すると、当然(?)全面デバッグウィンドウになります。これを、「"M-x rdebug"するだけで、左ソース右デバッガ」となるようにしたいわけです。

rdebug.el自体をいじることなく、きれいに挙動をいじる方法がわからなかったので、rdebug.elを直接書き換えました。ひどく異臭を感じますが、よくわからないなで我慢します。

--- rdebug.el.orig      2008-07-05 21:40:24.000000000 +0900
+++ rdebug.el   2008-07-05 21:21:51.000000000 +0900
@@ -109,6 +109,7 @@
                                  (concat rdebug-command-name " "))
                                nil nil
                                '(gud-rdebug-history . 1))))
+  (setq source-buffer (current-buffer))
   
   (if (not (fboundp 'gud-overload-functions))
       (gud-common-init command-line 'gud-rdebug-massage-args
@@ -133,4 +134,9 @@
       (set-marker comint-last-output-start (point)))
   (set (make-local-variable 'paragraph-start) comint-prompt-regexp)
   (run-hooks 'rdebug-mode-hook)
+  ;;; split and switch
+  (setq debugging-buffer (current-buffer))
+  (switch-to-buffer source-buffer)
+  (split-window-horizontally)
+  (switch-to-buffer-other-window debugging-buffer)
   )
  1. カレントバッファを別名記憶(ソース)
  2. デバッガのバッファを別名記憶(デバッガ)
  3. バッファをソースのバッファに切り替える
  4. ウィンドウを左右に割る
  5. 右のウィンドウのバッファをデバッガに切り替えてそこに移動

やった事は上記のような感じです。激しく異臭を放っています。

ここまでやって思ったんですが、gdbの場合はそもそも、自動でウィンドウが割れたり、ソースのウィンドウとデバッガのウィンドウが連動したり、あれやこれやと、至れり尽くせりだったりするんでしょうか?
ウノウラボ Unoh Labs: gdbの使い方

rdebug(ruby-debug)をEmacsから使う場合の、正しい方法や拡張ツールなど、どこかで提供されてたりしませんかね?


ちなみに、ようやくrcodetoolsをEmacsから使う様にしました。irbで複数行を扱うのは自分には無理です。かといって、捨てファイルを作って実行というのもアレ過ぎなので。Google経由でみつけた、"*ruby-scratch*"なelispをウィンドウは縦割りにして使わせてもらってます。

蛇足ですが、splitの縦(vertically)と横(horizontally)で混乱してます。split-window-verticallyとsplit-window-horizontallyの意味を間違えて、しばらくあれこれしてたのは内緒。縦に分けるのは上下に分けるで、横に分けるのは左右に分ける、と。正直、verticallyと見ただけで、「縦割り=上から下に切り割る事」だと思ってました。
垂直(vertically)方向に分割すると切れ目は水平に入って、水平(horizontally)方向に分割すると切れ目は垂直に入るわけですね。
ただ、未だに混乱が残ってます。「縦に割る」といった場合、「刀を上段からまっすぐ振り下ろす」的なイメージがありますが、間違いでしょうか?もう、自分が日本生まれで日本育ちの純日本人であることが信じられません。。。

プロフィール

このブログ記事について

このページは、koshigoeが2008年7月 5日 22:13に書いたブログ記事です。

ひとつ前のブログ記事は「Capistranoのタスクのロール指定を変更する方法」です。

次のブログ記事は「HikiのXML-RPCでページ削除したい」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。