トップ «前の日記(2005-06-15 (Wed)) 最新 次の日記(2005-06-18 (Sat))» 編集   RSS 1.0 FEED  

Journal InTime


2005-06-17 (Fri) [長年日記]

_ VIMでRuby Refactoring Browserを使う

~/.vim/plugin/rrb.vimに以下のような内容を書いておく。

command -nargs=1 -range RubyExtractMethod :call s:RubyExtractMethod(expand("<args>"), <line1>, <line2>)

function s:RubyExtractMethod(methodName, line1, line2)
    let path = expand("%")
    let out = system("rrb --extract-method " . path . " " . a:methodName . " " . a:line1 . " " . a:line2 . " --filein-overwrite " . path)
    if strlen(out) == 0
      edit
    else
      echo out
    endif
endfunction

で「:'a,. RubyExtractMethod foo」のように実行すると、 選択範囲がちゃんとfooというメソッドになる。 けっこうよさげ。

rrbコマンドのへルプを見ると、スーパークラスの抽出とかもできるようだ。

_ nodeline()

IRCでなかださんに教えてもらった、parse.yにあるデバッグ用の関数。 これがあれば、今まで

(gdb) p ((unsigned int)(((((struct RNode*)(ruby_current_node)))->flags>>(11 +8))&(((long)1<<(sizeof(NODE*)*8 -(11 +8)))-1)))

としてたのが、

(gdb) call nodeline(ruby_current_node)

こんなにすっきり!

括弧が多いのはcppのせいだよ。Lisperじゃないよ。

Tags: Ruby

_ ところてん

再度黒蜜に挑戦するも、あえなく敗退。 T君はハチミツでおいしかったと言っていたけれど、絶対ありえない。

今後は無理せず酢醤油でいただきます。

Tags:
本日のツッコミ(全1件) [ツッコミを入れる]
_ まつもと (2005-06-17 (Fri) 21:52)

実際には「p nodeline(node)」ですね。callだと表示してくれないでしょう?<br>っていうか、今までそんなカッコほんとに使ってたんですかぁ。