18c8de839SBram Moolenaar" Vim syntax file 28c8de839SBram Moolenaar" Language: generic git output 3*5c73622aSBram Moolenaar" Maintainer: Tim Pope <[email protected]> 4*5c73622aSBram Moolenaar" Last Change: 2009 Dec 24 58c8de839SBram Moolenaar 68c8de839SBram Moolenaarif exists("b:current_syntax") 78c8de839SBram Moolenaar finish 88c8de839SBram Moolenaarendif 98c8de839SBram Moolenaar 108c8de839SBram Moolenaarsyn case match 118c8de839SBram Moolenaarsyn sync minlines=50 128c8de839SBram Moolenaar 138c8de839SBram Moolenaarsyn include @gitDiff syntax/diff.vim 148c8de839SBram Moolenaar 158c8de839SBram Moolenaarsyn region gitHead start=/\%^/ end=/^$/ 16*5c73622aSBram Moolenaarsyn region gitHead start=/\%(^commit \x\{40\}\%(\s*(.*)\)\=$\)\@=/ end=/^$/ 178c8de839SBram Moolenaar 188c8de839SBram Moolenaar" For git reflog and git show ...^{tree}, avoid sync issues 198c8de839SBram Moolenaarsyn match gitHead /^\d\{6\} \%(\w\{4} \)\=\x\{40\}\%( [0-3]\)\=\t.*/ 208c8de839SBram Moolenaarsyn match gitHead /^\x\{40\} \x\{40}\t.*/ 218c8de839SBram Moolenaar 22*5c73622aSBram Moolenaarsyn region gitDiff start=/^\%(diff --git \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff fold 23*5c73622aSBram Moolenaarsyn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --\%(git\|cc\|combined\) \|$\)\@=/ contains=@gitDiff 24*5c73622aSBram Moolenaar 25*5c73622aSBram Moolenaarsyn region gitDiffMerge start=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff 26*5c73622aSBram Moolenaarsyn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff 27*5c73622aSBram Moolenaarsyn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge 28*5c73622aSBram Moolenaarsyn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge 298c8de839SBram Moolenaar 308c8de839SBram Moolenaarsyn match gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite 318c8de839SBram Moolenaarsyn match gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite 328c8de839SBram Moolenaarsyn match gitKeyword /^Merge:/ contained containedin=gitHead nextgroup=gitHashAbbrev skipwhite 338c8de839SBram Moolenaarsyn match gitMode /^\d\{6\}/ contained containedin=gitHead nextgroup=gitType,gitHash skipwhite 348c8de839SBram Moolenaarsyn match gitIdentityKeyword /^\%(author\|committer\|tagger\)\>/ contained containedin=gitHead nextgroup=gitIdentity skipwhite 358c8de839SBram Moolenaarsyn match gitIdentityHeader /^\%(Author\|Commit\|Tagger\):/ contained containedin=gitHead nextgroup=gitIdentity skipwhite 368c8de839SBram Moolenaarsyn match gitDateHeader /^\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitHead nextgroup=gitDate skipwhite 378c8de839SBram Moolenaar 388c8de839SBram Moolenaarsyn match gitReflogHeader /^Reflog:/ contained containedin=gitHead nextgroup=gitReflogMiddle skipwhite 398c8de839SBram Moolenaarsyn match gitReflogHeader /^Reflog message:/ contained containedin=gitHead skipwhite 408c8de839SBram Moolenaarsyn match gitReflogMiddle /\S\+@{\d\+} (/he=e-2 nextgroup=gitIdentity 418c8de839SBram Moolenaar 428c8de839SBram Moolenaarsyn match gitDate /\<\u\l\l \u\l\l \d\=\d \d\d:\d\d:\d\d \d\d\d\d [+-]\d\d\d\d/ contained 438c8de839SBram Moolenaarsyn match gitDate /-\=\d\+ [+-]\d\d\d\d\>/ contained 448c8de839SBram Moolenaarsyn match gitDate /\<\d\+ \l\+ ago\>/ contained 458c8de839SBram Moolenaarsyn match gitType /\<\%(tag\|commit\|tree\|blob\)\>/ contained nextgroup=gitHash skipwhite 468c8de839SBram Moolenaarsyn match gitStage /\<\d\t\@=/ contained 478c8de839SBram Moolenaarsyn match gitReference /\S\+\S\@!/ contained 48*5c73622aSBram Moolenaarsyn match gitHash /\<\x\{40\}\>/ contained nextgroup=gitIdentity,gitStage,gitHash skipwhite 498c8de839SBram Moolenaarsyn match gitHash /^\<\x\{40\}\>/ containedin=gitHead contained nextgroup=gitHash skipwhite 50*5c73622aSBram Moolenaarsyn match gitHashAbbrev /\<\x\{4,40\}\>/ contained nextgroup=gitHashAbbrev skipwhite 518c8de839SBram Moolenaarsyn match gitHashAbbrev /\<\x\{4,39\}\.\.\./he=e-3 contained nextgroup=gitHashAbbrev skipwhite 52*5c73622aSBram Moolenaar 53*5c73622aSBram Moolenaarsyn match gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite 54*5c73622aSBram Moolenaarsyn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity 55*5c73622aSBram Moolenaar 56*5c73622aSBram Moolenaarsyn match gitNotesHeader /^Notes:\ze\n / 578c8de839SBram Moolenaar 588c8de839SBram Moolenaarhi def link gitDateHeader gitIdentityHeader 598c8de839SBram Moolenaarhi def link gitIdentityHeader gitIdentityKeyword 608c8de839SBram Moolenaarhi def link gitIdentityKeyword Label 61*5c73622aSBram Moolenaarhi def link gitNotesHeader gitKeyword 628c8de839SBram Moolenaarhi def link gitReflogHeader gitKeyword 638c8de839SBram Moolenaarhi def link gitKeyword Keyword 648c8de839SBram Moolenaarhi def link gitIdentity String 658c8de839SBram Moolenaarhi def link gitEmailDelimiter Delimiter 668c8de839SBram Moolenaarhi def link gitEmail Special 678c8de839SBram Moolenaarhi def link gitDate Number 688c8de839SBram Moolenaarhi def link gitMode Number 698c8de839SBram Moolenaarhi def link gitHashAbbrev gitHash 708c8de839SBram Moolenaarhi def link gitHash Identifier 718c8de839SBram Moolenaarhi def link gitReflogMiddle gitReference 728c8de839SBram Moolenaarhi def link gitReference Function 738c8de839SBram Moolenaarhi def link gitStage gitType 748c8de839SBram Moolenaarhi def link gitType Type 75*5c73622aSBram Moolenaarhi def link gitDiffAdded diffAdded 76*5c73622aSBram Moolenaarhi def link gitDiffRemoved diffRemoved 778c8de839SBram Moolenaar 788c8de839SBram Moolenaarlet b:current_syntax = "git" 79