autocmdの syntaxの改造にトライ (syntax/vim.vim)

Lingr vim-users.jpでも相談させてもらったのですが、

au BufNewFile,BufRead *.html so <sfile>:h/html.vim

に対して、

au myvimrc BufNewFile,BufRead *.html so <sfile>:h/html.vim

ってやると、「BufNewFile,BufRead」がハイライトされてない。。。
これをどうにかしたい。っているのが今回の内容。
Vim初心者です。

Syntaxを調べる

syntax/vim.vimをなんとかしたい vim-jp/issues #155

より、

:echo synIDattr(synID(line("."), col("."), 1), "name")

にて確認するとありましたので、それで確認してみます。

au BufNewFile,BufRead *.html so
vimAutoCmd vimAutoEvent(List) vimAutoCmdSpace vimAutoCmdSfxList vimCommand

では、次はどうかというと。

au myvimrc BufNewFile,BufRead * . html so
vimAutoCmd vimAutoEventList vimAutoCmdSpace vimAutoCmdSfxList vimOper vimVar vimCommand

となってました。
ってことは、単純に vimAutoCmdの次に来る keyword に [group] がないってことか。

:au[tocmd] [group] {event} {pat} [nested] {cmd}
" Autocmd {{{2
" =======
syn match    vimAutoEventList    contained   "\(!\s\+\)\=\(\a\+,\)*\a\+"  contains=vimAutoEvent nextgroup=vimAutoCmdSpace
syn match    vimAutoCmdSpace contained   "\s\+"   nextgroup=vimAutoCmdSfxList
syn match    vimAutoCmdSfxList   contained   "\S*"
syn keyword  vimAutoCmd  au[tocmd] do[autocmd] doautoa[ll]   skipwhite nextgroup=vimAutoEventList

ふむ。確かに [group] 考慮が無さそう。
どうやればいいんだろうか???

改造する。

@@ -304,10 +304,11 @@
 
 " Autocmd {{{2
 " =======
+syn match  vimAutoCmdGroup contained   "\a\+"    contains=vimAutoEventList   skipwhite nextgroup=vimAutoEventList
 syn match  vimAutoEventList    contained   "\(!\s\+\)\=\(\a\+,\)*\a\+"   contains=vimAutoEvent nextgroup=vimAutoCmdSpace
 syn match  vimAutoCmdSpace contained   "\s\+"    nextgroup=vimAutoCmdSfxList
 syn match  vimAutoCmdSfxList   contained   "\S*"
-syn keyword   vimAutoCmd  au[tocmd] do[autocmd] doautoa[ll]   skipwhite nextgroup=vimAutoEventList
+syn keyword    vimAutoCmd  au[tocmd] do[autocmd] doautoa[ll]   skipwhite nextgroup=vimAutoCmdGroup
 
 " Echo and Execute -- prefer strings! {{{2
 " ===============

確かにこうすると

au myvimrc BufNewFile,BufRead *.html so <sfile>:h/html.vim
au myvimrc BufNewFile,BufRead *.html so
vimAutoCmd vimAutoEvent vimAutoEvent vimAutoCmdSpace vimAutoCmdSfxList vimCommand

ってなるので、ハイライトされるんだけど。。。

au BufNewFile,BufRead *.html so <sfile>:h/html.vim
au BufNewFile,BufRead * . html so
vimAutoCmd vimAutoEvent vimOper vimVar vimCommand

となってしまう。(´ε`;)ウーン…
確かにそうなんだけど・・・書き方分からない