FileTypeが発生するタイミング

Filetype pluginはファイルが開かれた場合などのイベントに応じて自動的にロード(:source)される。具体的にはFileTypeが発生したときにロードされ、FileTypeが発生する条件は以下の通りである:

  • :setfiletypeなどによる手動'filetype'設定
  • BufEnter、BufNewFile、BufRead、StdinReadPostのいずれかのイベントの発生(ただし'filetype'によって用いられるイベントは微妙に異なる)
Vim: Filetype pluginを極める - while (“im automaton”);

正確には、FileTypeは'filetype'オプションが設定された時にしか発生しない。ファイルを開いた時に発生しているのは、BufReadやBufNewFileイベント内で:set filetypeされているから。
これらのイベントは:filetype onされた時にロードされる、$VIMRUNTIME/filetype.vimで設定される。
更にこの中で、ユーザ独自の設定のため:runtime! ftdetect/*.vimされてたりファイルの中身で判断するために:au 〜 runtime! scripts.vimされてる。*1
つまり、ファイルを開いた時にオートコマンドでごちゃごちゃやって'filetype'を設定して、結果FileTypeイベントが発生していると。
そういう認識だったんだけど、どうなんだろう。さすがに細かすぎるので説明をはしょったのか、私の認識が間違っていたのか…。

更に言うとファイルタイププラグインのロードもFileTypeイベントに対するオートコマンドに過ぎないという。オートコマンド便利すぎ。

*1:実際にはロード済みの判定とかいろいろしてから:runtimeしてるけど細かくなるので省略