1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
irb関連おまけコマンドとライブラリ
$Release Version: 0.7.1 $
$Revision$
$Date$
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 <<END
foo = 1
foo
END
---
foo = 1
==>1
foo
==>1
=== XMPインスタンスを用いる.
この場合は, XMPがコンテキスト情報を持つので, 変数の値などを保持してい
ます.
require "irb/xmp"
xmp = XMP.new
xmp.puts <<END
foo = 1
foo
END
xmp.puts <<END
foo
END
===
foo = 1
==>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
#<Object:0x4027146c>
((|変数名.|))の後に(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:
%
|