拡張ライブラリを作っていて, make tag で TAGS file (Emacs用,
vi用は tags) ができてくれたら便利だなと思って mkmf.rb を書き
換えてみました.               はじめまして. 西松と申します.

ただし, ruby.h では rb_define_class() などが
       VALUE rb_define_class _((const char*,VALUE));
と宣言されていて, etags がうまく拾ってくれないので rubylibdir
以下に README.EXT または README.EXT.ja があることを想定して,
そこから宣言っぽいものを選ぶようにしました.

Emacs で M-. (find-tag) をよく使う方は試してみてください.
tags (vi用) については, ぼくはviを使えないので検証していませ
ん.

なお, ソースがカレントディレクトリにあることを仮定しています.
VPATHを気にしていません.


--- /home/t-nissie/AIX/work/ruby/ruby-1.7.2-snapshot2002.02.07/lib/mkmf.rb	Thu Jan 31 21:00:49 2002
+++ ./mkmf.rb	Mon Feb 11 18:01:22 2002
@@ -489,12 +489,20 @@
 distclean:	clean
 		@$(RM) Makefile extconf.h conftest.* mkmf.log
 		@$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
+		@$(RM) TAGS tags
 
 realclean:	distclean
 
 install:	$(archdir)$(target_prefix)/$(DLLIB)
 
 site-install:	$(sitearchdir)$(target_prefix)/$(DLLIB)
+
+tag:;		etags *.h *.c /dev/null
+		etags -a -r '/^[\\t ]*\\w*[\\t ]*\\*?\\w+(/' `find $(rubylibdir) -name 'README.EXT*' -print` /dev/null
+		etags -a $(archdir)/*.h
+		ctags *.h *.c /dev/null
+		ctags -a -r '/^[\\t ]*\\w*[\\t ]*\\*?\\w+(/' `find $(rubylibdir) -name 'README.EXT*' -print` /dev/null
+		ctags -a $(archdir)/*.h
 
 $(archdir)$(target_prefix)/$(DLLIB): $(DLLIB)
 	@$(RUBY) -r ftools -e 'File::makedirs(*ARGV)' $(rubylibdir) $(archdir)$(target_prefix)





-- 
 NISHIMATSU Takeshi
 西松 毅