2013年3月3日日曜日

[Emacs]GNU GLOBAL

インストール
  1. Windows 用のバイナリファイルは Yahoo! GeoCities: Get a web site with easy-to-use site building tools. からダウンロードする
  2. 展開したディレクトリへのパスをマイコンピュータを右クリック → [プロパティ] → [システムのプロパティ] → [詳細設定] → [環境変数] の PATH に登録する

ソースコード解析
サンプルとして grep のソースコードを解析してみる。
  1. Index of /pub/GNU/grep からソースコードをダウンロードし展開する
  2. 展開したディレクトリに移動し、gtags -v を実行する
    grep-2.5.4>gtags.exe -v
    [Mon Aug 03 10:35:57 東京 (標準時) 2009] Gtags started.
     Using default configuration.
    [Mon Aug 03 10:35:57 東京 (標準時) 2009] Creating 'GTAGS'.
     [1] extracting tags of intl/bindtextdom.c
     [2] extracting tags of intl/dcgettext.c
     [3] extracting tags of intl/dcigettext.c
     [4] extracting tags of intl/dcngettext.c
     [5] extracting tags of intl/dgettext.c
     [6] extracting tags of intl/dngettext.c
    (以下略)

Emacs の設定
  1. gtags バイナリを展開したディレクトリ内の share/gtags にある gtags.el を Emacs の site-lisp ディレクトリにコピーする
  2. .emacs に以下を追記する
    ;;; === GTAGS ===
    (autoload 'gtags-mode "gtags" "" t)
  3. Emacs を起動したら M-x gtags-mode を実行する
  4. gtags -v を実行したディレクトリで M-x gtags-find-tag を実行すると mini-buffer に次のように表示される
    Find tag: (default ABOUT)
    ここで main と入力すると次のように main 関数で宣言されている箇所が表示される
    main 985 lib/getopt.c main (argc, argv)
    main 101 lib/getopt1.c main (argc, argv)
    main 73 lib/strtoumax.c main ()
    main 258 lib/xstrtol.c main (int argc, char** argv)
    main 230 src/ansi2knr.c main(argc, argv)
    main 1825 src/grep.c main (int argc, char **argv)

HTML で出力
  1. gtags コマンドを実行した後に htags.exe -v を実行する
    grep-2.5.4>htags.exe -v
    checking C:/home/grep-2.5.4/GTAGS
    GTAGS found at 'C:/home/grep-2.5.4/GTAGS'.
    [Mon Aug 03 12:04:37 東京 (標準時) 2009] Htags started
    [Mon Aug 03 12:04:37 東京 (標準時) 2009] (0) making directories ...
    [Mon Aug 03 12:04:37 東京 (標準時) 2009] (1) making CGI program ...(skipped)
    [Mon Aug 03 12:04:37 東京 (標準時) 2009] (2) making help.html ...
    [Mon Aug 03 12:04:37 東京 (標準時) 2009] (3) making duplicate entries ...
     [1] adding definition ACCEPTING
     [2] adding definition ACCEPTS_IN_CONTEXT
     [3] adding definition ADDOP2
     [4] adding definition ADDRESS_FUNCTION
     [5] adding definition ADD_BLOCK
  2. HTML ディレクトリが生成されるので、その中の index.html から関数をたどることができるようになる

参考ページ
GNU GLOBAL 本家 (GNU GLOBAL source code tag system)

0 件のコメント:

コメントを投稿