Hatena::ブログ(Diary)

初学者の箸置 このページをアンテナに追加 RSSフィード

2011-06-21

[][]ErlangソースコードGNU globalを使う

そういえばすっかり忘れてた。プレゼンにもシレッと "But can!!" とかだけ書いてて全然説明飛ばしてたよ><

というわけで帰りの車窓にて。

GNU global

まあ言うまでもないとは思いますが、標準的なtagsよりもちょっと便利な検索機能つき、定義だけでなく参照地点の逆検索も可能、その上HTMLにpretty-printしてくれるラブリーエンジェルglobalタンです。

残念ながら現時点でのglobalはC/C++関連とJava, PHP, (なぜか)yacc, asmファイル、くらいしか受け付けない好き嫌いの激しい子なので、直接はerlangを扱うことができません。

exuberant!!!

しかしです、先輩達は違います。先輩達は酸いも甘いも噛み分けるオトナです。

大先輩 exuberant-ctags入れてください。

Ant

Asm

Asp

Awk

Basic

BETA

C

C++

C#

Cobol

DosBatch

Eiffel

Erlang

Flex

Fortran

HTML

Java

JavaScript

Lisp

Lua

Make

MatLab

ObjectiveC

OCaml

Pascal

Perl

PHP

Python

REXX

Ruby

Scheme

Sh

SLang

SML

SQL

Tcl

Tex

Vera

Verilog

VHDL

Vim

YACC

ブラボー。

できないことは先輩にお願いしちゃえば良いんデス。

plugin!!

実はデフォルトのglobalのパッケージにctagsをプラグインとして使う設定が入ってるんですね。だからこれを使えば一発だったりw

手順は簡単の3ステップ。

1. まずは雛形のコンフィグファイルgtags.confを拾ってきます。ソース配布ならそんなか。apt-getとかで入れてしまった場合も/usr/share/doc/global/examples/gtags.confとかにあると思います。

2. 次にこのファイルを修正します。と言っても一ヶ所だけ。ctags-exuberant: の項目のsuffixesの最後あたりに ,erl,hrlを追加するだけ。

3. あとは目的のディレクトリにて

 % gtags --gtagsconf=../../gtags.conf --gtagslabel=ctags-exuberant

のように実行するだけ。

いやー簡単。この後同ディレクトリでhtagsすればHTMLフォルダが生成されます。会場でやってたのはこうやって作ったものです。

まとめ

なんだかctagsとマージしてくれればこんなことせんでもよいような。。。

globalのplugin parserは他にもいろいろ出来るみたいだけれども、できない僕にはよくわかりません。

注意:某氏に突っ込まれたのですが、誤解を招く表現になってます。この方法でTAG作った場合GRTAGS(参照位置タグ)は効きません。このプラグインパーサ方式というのは単純にdefs, または refsと行などのペアをgtags本体に渡してやって、globalデータベースの構築だけをglobalに下請けしてもらう、という方法なので、そもそもrefs情報を持たないctagsから直接それは出来ません。一応今晩にでもGRTAGSの作り方をやるかも・・・

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/tkuro/20110621/1308653766