irb関連おまけコマンドとライブラリ $Release Version: 0.7.1 $ $Revision$ by Keiju ISHITSUKA(Nihon Rational Co.,Ltd.) =begin :コマンド: * rtags -- ruby tags command :関数ライブラリ: * xmp -- irb version of gotoken xmp-function :クラスライブラリ: * frame.rb -- frame tracer * completion.rb -- irb completor = rtags rtagsはemacs及びvi用の, TAGファイルをつくるコマンドです. == 使い方 rtags [-vi] file.... カレントディレクトリにemacs用のTAGSファイルができます. -viオプションを つけた時にはvi用のtagsファイルを作成します. emacsの場合, 通常のetags.elがそのまま使えます. 検索可能なのは, * クラス * メソッド * 特異メソッド * alias * attrで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る) * attr_XXXで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る) です. Cなどで使っているのと違うのは, コンプリーションに関する部分で, 関数名は, 関数名( クラスは, ::クラス名::....::クラス名 メソッドは, ::クラス名::....::クラス名#メソッド名 特異メソッド(クラスメソッド)は ::クラス名::....::クラス名.メソッド名 でコンプリーションを行なうところです. = xmp.rb ごとけんxmpの上位互換バージョンです. ただ, 非常に重いのでごとけんxmpで は対応できない時に, 使用すると良いでしょう. == 使い方 === 関数として使う. require "irb/xmp" xmp <1 foo ==>1 === XMPインスタンスを用いる. この場合は, XMPがコンテキスト情報を持つので, 変数の値などを保持してい ます. require "irb/xmp" xmp = XMP.new xmp.puts <1 foo ==>1 foo ==>1 == コンテキストに関して XMPメソッド群のコンテキストは, 呼び出す前のコンテキストで評価されます. 明示的にコンテキストを指定するとそのコンテキストで評価します. 例: xmp "foo", an_binding :注: マルチスレッドには対応していません. = frame.rb 現在実行中のフレーム情報を取り扱うためのクラスです. * IRB::Frame.top(n = 0) 上からn番目のコンテキストを取り出します. nは0が最上位になります. * IRB::Frame.bottom(n = 0) 下からn番目のコンテキストを取り出します. nは0が最下位になります. * IRB::Frame.sender センダになっているオブジェクトを取り出します. センダとは, そのメソッ ドを呼び出した側のselfのことです. :注: set_trace_funcを用いてRubyの実行をトレースしています. マルチスレッドに は対応していません. = completion.rb irbのcompletion機能を提供するものです. == 使い方 % irb -r irb/completion とするか, ~/.irbrc 中に require "irb/completion" を入れてください. irb実行中に require "irb/completion" してもよいです. irb実行中に (TAB) を押すとコンプレーションします. トップレベルで(TAB)を押すとすべての構文要素, クラス, メソッドの候補がで ます. 候補が唯一ならば完全に補完します. irb(main):001:0> in in inspect instance_eval include install_alias_method instance_of? initialize install_aliases instance_variables irb(main):001:0> inspect "main" irb(main):002:0> foo = Object.new # ((|変数名.|))の後に(TAB)を押すと, そのオブジェクトのメソッド一覧がでま す. irb(main):003:0> foo. foo.== foo.frozen? foo.protected_methods foo.=== foo.hash foo.public_methods foo.=~ foo.id foo.respond_to? foo.__id__ foo.inspect foo.send foo.__send__ foo.instance_eval foo.singleton_methods foo.class foo.instance_of? foo.taint foo.clone foo.instance_variables foo.tainted? foo.display foo.is_a? foo.to_a foo.dup foo.kind_of? foo.to_s foo.eql? foo.method foo.type foo.equal? foo.methods foo.untaint foo.extend foo.nil? foo.freeze foo.private_methods =end % Begin Emacs Environment % Local Variables: % mode: text % comment-column: 0 % comment-start: "%" % comment-end: "\n" % End: %