ステート番号を使っている部分から実際のステート定義を見れたら便利だろうか、などとついった見ながら思ったのでとりあえず作った。
…んだけど、これ便利かなぁ…(´・ω・`)
Gistにも置いてみた MUGEN用tagsファイル作成スクリプト。 ステート番号をタグ扱いにしてます。
#!ruby # -*- coding: utf-8 -*- tags = { } tagfile = nil section_pattern = /\s*\[\s*(statedef)\s+((-+)?\d+)\].*$/i ARGV.each do |arg| Dir.glob(arg) do |path| File.binread(path).split(%r{\r\n|\r|\n}).each_with_index do |line, lineno| match = line.match(section_pattern) if match tagname = match[2].to_i unless taglist.has_key?(tagname) tags[tagname] = [] end tags[tagname] << "#{arg}\t#{lineno + 1}" #tagfile.puts "#{tagname}\t#{arg}\t#{lineno}" end end end end begin tagfile = File.open("tags", "wb") tags.keys.sort.each do |key| tags[key].each do |value| tagfile.puts "#{key}\t#{value}" end end ensure if tagfile != nil tagfile.close end end # vim: set sts=2 ts=2 sw=2 expandtab:
使い方は
ruby mtags.rb **.st **.cns **.cmd
コレを実行すると↓みたいな内容のtagsファイルがカレントディレクトリに作成されます。
-3 GodRugal.st 725 -2 GodRugal.st 11 40 Common.st 12 50 Common.st 112 52 Common.st 169 100 Common.st 221 101 Common.st 274 102 Common.st 312 103 Common.st 346 105 Common.st 385 106 Common.st 420 120 Common.st 463 130 Common.st 527 131 Common.st 567 132 Common.st 607 150 Common.st 675 151 Common.st 729 152 Common.st 781 153 Common.st 835 154 Common.st 887 155 Common.st 927 180 PosesR.st 9 181 PosesG.st 65 182 PosesG.st 90 185 PosesG.st 120 186 PosesG.st 181 190 PosesR.st 44 191 PosesR.st 70 192 PosesR.st 102 195 PosesR.st 135 197 PosesG.st 322
後はVIMとかのctags対応アプリでステート番号の上*1でタグジャンプを使うと、そのステート定義が書いてあるファイルを開いて、該当ステートまで移動します。たぶん。
*1:ChangeStateのvalue=に書いた数字とか、StateNo=とかの数字