Abaqus 有限要素解析入力ファイルの表示にタグバーを使用できるようにする vim タグバーの「カスタム言語」を構成しようとしています。
次のリンクから例を複製しました。
http://github.com/majutsushi/tagbar/wiki
http://andrew.stwrt.ca/posts/vim-ctags/
ctags、vimwiki、vim、tagbar-plugin
http://ctags.sourceforge.net/EXTENDING.html
これは私が使用しているソフトウェアです:
- RHEL6.7
- vim 7.4
- タグバー 2.6.1
- 熱狂的なCtags 5.8
Abaqus 入力ファイル example.inp の例
** Analyst:
** Comments
** More comments
**
****************************************
** Section Name One
****************************************
*Keyword1
*KEYWORD2
**
****************************************
** Section Name Two
****************************************
*Keyword3
これは、vim 構成ファイル ~/.vimrc に追加したものです。
let g:tagbar_type_AbaqusINP = {
\ 'ctagstype' : 'AbaqusINP',
\ 'kinds' : [
\ 's:Section',
\ 'k:Keyword'
\ ],
\ 'sort' : 0
\ }
ctags 構成ファイル ~/.ctags を作成しました
--langdef=AbaqusINP
--langmap=AbaqusINP:.inp
--regex-AbaqusINP=/^\*\*\*[\*]+\n\*\*[ \tA-Za-z]+/\3/s,Section/
--regex-AbaqusINP=/^\*[A-Za-z]+/\1/k,Keyword/
入力ファイルを開いてからタグバーを開くと、何もありません。コマンド ラインから次のコマンドを呼び出すと、AbaqusINP *.inp がリストに表示されます。
$ ctags --list-maps
Ant *.build.xml
...
AbaqusINP *.inp
タグ ファイルを手動で作成しようとすると、キーワードが見つかった行ごとに次の警告が表示されます。
$ ctags example.inp
ctags: Warning: example.inp:8: null expansion of name pattern "\1"
ctags: Warning: example.inp:9: null expansion of name pattern "\1"
ctags: Warning: example.inp:14: null expansion of name pattern "\1"
タグ ファイルが作成されますが、既定のヘッダーだけが読み込まれます。
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME Exuberant Ctags //
!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
!_TAG_PROGRAM_VERSION 5.8 //
ctags がタグバーが使用するタグを作成しない理由について何か考えはありますか? ご協力いただきありがとうございます。
更新: 必要な正規表現を明確にします。
セクション名とキーワードにタグを付けてほしい。これらのパターンを vim で試したところ、正しく動作するように見えました。
上記の example.inp ファイルの場合、セクションの正規表現が返されるようにします。
- セクション名 1
セクション名 2
section_regex = ^\*\*\*[\*]+\n\*\*[ \tA-Za-z]+
上記の example.inp ファイルの場合、キーワードの正規表現が返されるようにします。
- キーワード1
- キーワード2
- キーワード3
キーワード_正規表現 =^\*[A-Za-z]+