hg commit のシンタックスカラー

を見つけたのをきっかけに、Mercurialシンタックスカラーを作ってみた。

~/.vim/filetype.vim

autocmd BufNewFile,BufRead hg-editor-*.txt
  \ :setf hgcommit
  \| :$r!hg diff

~/.vim/syntax/hgcommit.vim

" Vim syntax file
" Language: hg (Mercurial) commit file
" Maintainer: Ken Takata <kentkt at csc dot jp>
" Last Change: 2012 Jul 18
" Filenames: hg-editor-*.txt
" License: VIM License
" URL: https://github.com/k-takata/hg-vim

if exists("b:current_syntax")
 finish
endif

syn include @hgcommitDiff syntax/diff.vim
syn region hgcommitDiff start=/\%(^diff -\)\@=/ end=/^$\|^#\@=/ contains=@hgcommitDiff

syn match hgComment "^HG: .*$"
syn match hgUser "^HG: user: \zs.*$" contained containedin=hgComment
syn match hgBranch "^HG: branch \zs.*$" contained containedin=hgComment
syn match hgAdded "^HG: \zsadded .*$" contained containedin=hgComment
syn match hgChanged "^HG: \zschanged .*$" contained containedin=hgComment
syn match hgRemoved "^HG: \zsremoved .*$" contained containedin=hgComment

hi def link hgComment Comment
hi def link hgUser String
hi def link hgBranch String
hi def link hgAdded Identifier
hi def link hgChanged Special
hi def link hgRemoved Constant

let b:current_syntax = "hg"

git だと、git commit -vで、コミットログファイルにdiff結果も表示されるんだけど、hg だと現状は無理っぽいので、filetype.vim 側で、$r!hg diffしてる。
参考にしたコードでは diff 結果のカラーリングが行われないので、それを追加した感じ。