タグ検索ジャンプ

■ 概要

 多数のソースファイルで構成されているプログラムを作成(あるいは閲覧)する際に、 ある特定の識別名(関数名、変数名、構造体名、マクロ名等)が使われている箇所を 全てリストアップするには、Grep が便利です。 しかし、その識別名が定義されているおおもとの箇所だけを対象として、 その箇所のソースファイルを即座に開きたい時には、「タグ検索ジャンプ」が 非常に便利です。

 「タグ検索ジャンプ」を実行すると、現カーソル位置にある識別名が、 所定の「タグファイル」から検索されます。このタグファイルには、各識別名の 定義箇所の情報が格納されています。そこで、その情報が見つかれば、そのファイルの 編集ウィンドウが開いて、その定義箇所にカーソルが移動します。

 このように、タグ検索ジャンプでは、必ず「タグファイル」が検索されます。 そのため、このファイルは、事前に作成しておく必要があります。 それには、「タグファイル作成」を実行します。この機能は、初期環境では、 メインメニューの「移動」内にあります。なお、タグファイルの作成に関する詳細は、 後述します。

 「タグ検索ジャンプ」の実行は、初期環境では、
   Ctrl+I キー
に割り当てられています。また、メインメニューの「移動」内にも配置されています。 タグ検索ジャンプの実行に関する詳細は、後述します。

 なお、他のテキストエディタでは、「タグ検索ジャンプ」という用語ではなく、 単に「タグジャンプ」あるいは「ダイレクトタグジャンプ」等という用語が 使われています。しかし、本エディタとしては、このうちのどれを使うのも 若干違和感があるので、独自の用語を使っています。

■ タグファイルの作成

 タグファイルの作成には、ctags.exe という外部プログラムを利用させて頂いています。 このプログラムは、非常に優秀で、C/C++ 言語だけでなく、様々なプログラミング言語にも 対応しています。また、単に、関数だけでなく、変数、クラスとそのメンバー、さらに、 マクロ等をも扱えます。 ctags.exe の詳しい情報は、以下のサイトをご覧ください。
  http://hp.vector.co.jp/authors/VA025040/ctags/

 タグファイルの作成は、勿論、ctags.exe を直接実行することによって行なえますが、 ctags.exe には、豊富なオプションがあり、それに柔軟に対応するには、スクリプトを 介する方が得策です。
 現状では、そのオプションをまだ十分には使いこなしていませんが、 CtagMake.mc という MikoScript を介して、ctags.exe を起動するようになっています。 なお、このスクリプトでは、ctags.exe が、 本エディタのツールフォルダ内に入っていることを 前提にしています。(初期環境では、インストールされています。) また、このスクリプトでは、C/C++ 言語の関数、クラス、マクロ、広域変数等を 対象にしています。 これを変更するには、このスクリプトのソースを書き換える必要があります。 簡単な変更なら、このソース内のコメントの有効/無効を切り換えるだけでできます。

 ctags.exe が生成するタグファイルは、通常、"tags" という名前になっています。 このファイルには、各識別名と、それが定義されているファイルの名前と行の情報が、 対になって格納されています。行の情報としては、行番号、または、行内容(その行にある 文字列)のどちらかになります。行番号の場合、タグファイルのサイズが小さて済みますが、 もとのファイルが変更された時に、ジャンプ先がズレてしまう欠点があります。 CtagMake.mc では、現状、行内容の方を採用しています。

■ タグ検索ジャンプの実行

 タグ検索ジャンプの実行は、CTagFind.mc という MikoScript で行ないます。 このスクリプトは、"tags" ファイル(上記参照)を、まず、現編集ファイルのフォルダ内で 検索します。もし、そこになければ、次のようにします。

 初期環境の「タグ検索ジャンプ」では、CTagFind.mc を、引数なしで実行しています。 これを変更するには、「スクリプトコマンドの入力リスト」内の「タグ検索ジャンプ」の行を 書き換えます。

 タグ検索ジャンプを実行した時に、対象の識別名の定義箇所が複数見つかる場合があります。 例えば、クラス名に対して、タグ検索ジャンプを行なうと、そのクラス自身の定義と、 そのクラスのコンストラクタの定義の2箇所が見つかります。

 そのような場合、CTagFind.mc では、その複数箇所の情報を、「スクリプトコンソール ウィンドウ」に表示します。その際、希望の箇所の行を、ダブルクリックすれば、 その箇所の編集ウィンドウが開きます。なお、現版の初期環境では特に問題ありませんが、 もし、スクリプトコンソールウィンドウの環境設定で、タグジャンプやダブルクリックの 機能が変更されていれば、この操作ができないかもしれません。