EMACSで熱狂的なCTAGを使用しながら、Verilog言語のヘッダーファイルを指定して使用する方法
-
27-10-2019 - |
質問
私は最近、Verilog&System Verilogコーディングとコードブラウジングに熱狂的なCTAGとEMACSの使用を開始しました。現在、コマンドを使用してタグを生成します
ctags -e -R --tag-relative=yes --langmap=verilog:.v.vh.sv.svh
私のコードには、多くの「マクロを定義するマクロ」がすべて拡張機能「.vh」& ".svh"を使用して特定のヘッダーファイルで指定されています。たとえば、名前付きヘッダーファイル foo.vh 次のコードがあります
`define WIDTH_ADDRESS 32;
とファイル top.v 次のようにマクロを呼び出します
input [`WIDTH_ADDRESS - 1 : 0] InAddress;
閲覧中 top.v emacsを使用してファイルを使用して、マクロ定義に直接ジャンプする方法はありますか foo.vh ファイル?
私は使用しています M-x tags-search <RET> WIDTH_ADDRESS <RET>
しばらくの間、foo.vhファイルに到達する前に、他のファイルの `width_addressの他のかなりの数のインスタンスにジャンプします。
いくつかの調査の後、私はヘッダーファイルを使用して指定するオプションを見ました -h
タグ生成中のCTAGを使用したオプション。しかし、私はそれを動作させることができず、私の部分からいくつかの構文的なエラーがあったと思います。
まず第一に、ヘッダーファイルを使用して指定することの顕著な利点はありますか -h
オプション?もしそうなら、ヘッダーファイルを指定するための正しい構文は何ですか?また、他のファイルを解析する前に、これらのヘッダーファイルを最初に調べるためにこれらのヘッダーファイル(拡張機能 ".VH"& "。SVH")を調べるEMACSを指定できますか(拡張機能 ".V"& ".sv")
解決
-hオプションの構文はです -h .vh.svh
CTAGが「width_addressマクロの呼び出しを選択している理由がわかりません。 width_addressが「複数回定義されている」場合、すべての定義をピックアップする必要はありませんが、呼び出しではありません。たぶんそれはVerilogプラグインの問題です。いつでもタグファイルを編集し、不要なエントリを削除できます。これは、SEDまたはPERLスクリプトで簡単にできるはずです。