syntax clear syntax region plug1 start=/\%1l/ end=/\%2l/ contains=plugNumber syntax region plug2 start=/\%2l/ end=/\%3l/ contains=plugBracket,plugX syn match plugNumber /[0-9]\+[0-9.]*/ contained syn match plugBracket /[[\]]/ contained syn match plugX /x/ contained syn match plugDash /^-/ syn match plugPlus /^+/ syn match plugStar /^*/ syn match plugMessage /\(^- \)\@<=.*/ syn match plugName /\(^- \)\@<=[^ ]*:/ syn match plugSha /\%(: \)\@<=[0-9a-f]\{4,}$/ syn match plugTag /(tag: [^)]\+)/ syn match plugInstall /\(^+ \)\@<=[^:]*/ syn match plugUpdate /\(^* \)\@<=[^:]*/ syn match plugCommit /^ \X*[0-9a-f]\{7,9} .*/ contains=plugRelDate,plugEdge,plugTag syn match plugEdge /^ \X\+$/ syn match plugEdge /^ \X*/ contained nextgroup=plugSha syn match plugSha /[0-9a-f]\{7,9}/ contained syn match plugRelDate /([^)]*)$/ contained syn match plugNotLoaded /(not loaded)$/ syn match plugError /^x.*/ syn region plugDeleted start=/^\~ .*/ end=/^\ze\S/ syn match plugH2 /^.*:\n-\+$/ syn keyword Function PlugInstall PlugStatus PlugUpdate PlugClean hi def link plug1 Title hi def link plug2 Repeat hi def link plugH2 Type hi def link plugX Exception hi def link plugBracket Structure hi def link plugNumber Number hi def link plugDash Special hi def link plugPlus Constant hi def link plugStar Boolean hi def link plugMessage Function hi def link plugName Label hi def link plugInstall Function hi def link plugUpdate Type hi def link plugError Error hi def link plugDeleted Ignore hi def link plugRelDate Comment hi def link plugEdge PreProc hi def link plugSha Identifier hi def link plugTag Constant hi def link plugNotLoaded Comment