Vim の TagList で ActionScript3 を表示できるようにしてみた
vim で TagList が使えるのは心強いですよね
そもそも TagList ってなんですか
という話は、こちらを参照してみてください Taglist プラグインがヤバい件 - @sugamasao.blog.title # => ”コードで世界を変えたい”
ようするに、メソッドや変数の一覧が出るウィンドウを表示できます、ということです。
で、TagList を使おうと思っても
デフォルトでは AS に ctags が対応していないから(よくわかってない)か、内容が表示されなくて途方にくれていました。
で、調べたら AS3 用の ctags で使用する正規表現とやらがあったので、使ってみた。
ついでに、イマイチ構文チェックがおかしい(public とかのキーワードと satatic が or 条件になってる)部分などがあったので、ちょっと手直ししてみた。
結果
~/.ctags に以下のように追記
--langdef=actionscript --langmap=actionscript:.as --regex-actionscript=/^[ \t]*[(private|public|protected) ( \t)]*class[ \t]+([A-Za-z0-9_]+)[ \t]*/\1/c,class, classes/ --regex-actionscript=/^[ \t]*[(private|public|protected) ( \t)]*[(static) ( \t)]*function[ \t]+([A-Za-z0-9_]+)[ \t]*\(/\1/f, function, functions/ --regex-actionscript=/^[ \t]*[(private|public|protected) ( \t)]*[(static) ( \t)]*const[ \t]+([A-Za-z0-9_]+)[ \t]*/\1/v,variable,variables/ --regex-actionscript=/^[ \t]*[(private|public|protected) ( \t)]*[(static) ( \t)]*var[ \t]+([A-Za-z0-9_]+)[ \t]*/\1/v,variable,variables/ --regex-actionscript=/^[ \t]*[(private|public|protected) ( \t)]*[(static) ( \t)]*function[ \t]+(set|get)[ \t]+([A-Za-z0-9_]+)[ \t]*\(/\1 \2/p,property, propertis/ --regex-actionscript=/.*\.prototype \.([A-Za-z0-9 ]+)=([ \t]?)function( [ \t]?)*\(/\1/ f,function, functions/
.vimrc に以下のように追記
let g:tlist_actionscript_settings = 'actionscript;c:class;v:var;p:property;m:method;f:function;o:object;const:constants'
本当は const で別の表示しようかと思って正規表現は別にしたものの、使い方がよくわかっていなくて vimrc との連携で挫折して var に表示されるようにしてしまった。
まぁ、大文字で書くからわかるんだけどね。
ついでに
TagList 用の設定はこんな感じ
nmap <F2> :Tlist<CR> let Tlist_Ctags_Cmd = "/opt/local/bin/ctags" "ctagsのパス let Tlist_Show_One_File = 1 "現在編集中のソースのタグしか表示しない let Tlist_Exit_OnlyWindow = 1 "taglistのウィンドーが最後のウィンドーならばVimを閉じる "let Tlist_Use_Right_Window = 1 "右側でtaglistのウィンドーを表示
むかし、キーマップの書き方(作法)が悪いと言われて、そのうちなんとか直そうとおもいつつ放置しっぱなし><