新型スカウターを開発した

先日スカウターを故障させるスクリプトを開発した。
しかし故障させておくわけにもいかないので、パワーアップスクリプトを適用してもきちんと計測できる新型スカウターを開発した。

function! Scouter(file, ...)
  let pat = '^\s*$\|^\s*"'
  let lines = readfile(a:file)
  if !a:0 || !a:1
    let lines = split(substitute(join(lines, "\n"), '\n\s*\\', '', 'g'), "\n")
  endif
  return len(filter(lines,'v:val !~ pat'))
endfunction
command! -bar -bang -nargs=? -complete=file Scouter
\        echo Scouter(empty(<q-args>) ? $MYVIMRC : expand(<q-args>), <bang>0)

これは \ による行の折り返しを 1 行とみなして計測するようにしてある。よって旧式のスカウターに比べて戦闘力が少なめに計測されるが、それが本来の数値と言うことで仕様。

ちなみに比較できるように :Scouter! で旧式の動作をするようにしてある。

:Scouter!
39595
:Scouter
996

これで私もめでたく中級者に降格することとなった。
この方式を戦闘力の計測の新基準として提案するがどうだろうか。



追記: これは現在プラグイン化されています。ご利用の場合はこちらをどうぞ。
複数ファイル同時に計測できたりなど、より便利になっています。
https://github.com/thinca/vim-scouter