18c8de839SBram Moolenaar" Vim syntax file 28c8de839SBram Moolenaar" Language: generic git output 35c73622aSBram Moolenaar" Maintainer: Tim Pope <[email protected]> 4*c08ee747SBram Moolenaar" Last Change: 2019 Dec 05 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*c08ee747SBram Moolenaarsyn region gitHead start=/\%(^commit\%( \x\{40\}\)\{1,\}\%(\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 225c73622aSBram Moolenaarsyn region gitDiff start=/^\%(diff --git \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff fold 235c73622aSBram Moolenaarsyn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --\%(git\|cc\|combined\) \|$\)\@=/ contains=@gitDiff 245c73622aSBram Moolenaar 255c73622aSBram Moolenaarsyn region gitDiffMerge start=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff 265c73622aSBram Moolenaarsyn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff 275c73622aSBram Moolenaarsyn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge 28*c08ee747SBram Moolenaarsyn match gitDiffAdded "{+.*+}" contained containedin=gitDiff 295c73622aSBram Moolenaarsyn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge 30*c08ee747SBram Moolenaarsyn match gitDiffRemoved "\[-.*-\]" contained containedin=gitDiff 318c8de839SBram Moolenaar 328c8de839SBram Moolenaarsyn match gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite 338c8de839SBram Moolenaarsyn match gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite 348c8de839SBram Moolenaarsyn match gitKeyword /^Merge:/ contained containedin=gitHead nextgroup=gitHashAbbrev skipwhite 35*c08ee747SBram Moolenaarsyn match gitMode /^\d\{6\}\>/ contained containedin=gitHead nextgroup=gitType,gitHash skipwhite 368c8de839SBram Moolenaarsyn match gitIdentityKeyword /^\%(author\|committer\|tagger\)\>/ contained containedin=gitHead nextgroup=gitIdentity skipwhite 378c8de839SBram Moolenaarsyn match gitIdentityHeader /^\%(Author\|Commit\|Tagger\):/ contained containedin=gitHead nextgroup=gitIdentity skipwhite 388c8de839SBram Moolenaarsyn match gitDateHeader /^\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitHead nextgroup=gitDate skipwhite 398c8de839SBram Moolenaar 408c8de839SBram Moolenaarsyn match gitReflogHeader /^Reflog:/ contained containedin=gitHead nextgroup=gitReflogMiddle skipwhite 418c8de839SBram Moolenaarsyn match gitReflogHeader /^Reflog message:/ contained containedin=gitHead skipwhite 428c8de839SBram Moolenaarsyn match gitReflogMiddle /\S\+@{\d\+} (/he=e-2 nextgroup=gitIdentity 438c8de839SBram Moolenaar 448c8de839SBram 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 458c8de839SBram Moolenaarsyn match gitDate /-\=\d\+ [+-]\d\d\d\d\>/ contained 468c8de839SBram Moolenaarsyn match gitDate /\<\d\+ \l\+ ago\>/ contained 478c8de839SBram Moolenaarsyn match gitType /\<\%(tag\|commit\|tree\|blob\)\>/ contained nextgroup=gitHash skipwhite 488c8de839SBram Moolenaarsyn match gitStage /\<\d\t\@=/ contained 498c8de839SBram Moolenaarsyn match gitReference /\S\+\S\@!/ contained 505c73622aSBram Moolenaarsyn match gitHash /\<\x\{40\}\>/ contained nextgroup=gitIdentity,gitStage,gitHash skipwhite 518c8de839SBram Moolenaarsyn match gitHash /^\<\x\{40\}\>/ containedin=gitHead contained nextgroup=gitHash skipwhite 525c73622aSBram Moolenaarsyn match gitHashAbbrev /\<\x\{4,40\}\>/ contained nextgroup=gitHashAbbrev skipwhite 538c8de839SBram Moolenaarsyn match gitHashAbbrev /\<\x\{4,39\}\.\.\./he=e-3 contained nextgroup=gitHashAbbrev skipwhite 545c73622aSBram Moolenaar 555c73622aSBram Moolenaarsyn match gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite 565c73622aSBram Moolenaarsyn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity 575c73622aSBram Moolenaar 585c73622aSBram Moolenaarsyn match gitNotesHeader /^Notes:\ze\n / 598c8de839SBram Moolenaar 608c8de839SBram Moolenaarhi def link gitDateHeader gitIdentityHeader 618c8de839SBram Moolenaarhi def link gitIdentityHeader gitIdentityKeyword 628c8de839SBram Moolenaarhi def link gitIdentityKeyword Label 635c73622aSBram Moolenaarhi def link gitNotesHeader gitKeyword 648c8de839SBram Moolenaarhi def link gitReflogHeader gitKeyword 658c8de839SBram Moolenaarhi def link gitKeyword Keyword 668c8de839SBram Moolenaarhi def link gitIdentity String 678c8de839SBram Moolenaarhi def link gitEmailDelimiter Delimiter 688c8de839SBram Moolenaarhi def link gitEmail Special 698c8de839SBram Moolenaarhi def link gitDate Number 708c8de839SBram Moolenaarhi def link gitMode Number 718c8de839SBram Moolenaarhi def link gitHashAbbrev gitHash 728c8de839SBram Moolenaarhi def link gitHash Identifier 738c8de839SBram Moolenaarhi def link gitReflogMiddle gitReference 748c8de839SBram Moolenaarhi def link gitReference Function 758c8de839SBram Moolenaarhi def link gitStage gitType 768c8de839SBram Moolenaarhi def link gitType Type 775c73622aSBram Moolenaarhi def link gitDiffAdded diffAdded 785c73622aSBram Moolenaarhi def link gitDiffRemoved diffRemoved 798c8de839SBram Moolenaar 808c8de839SBram Moolenaarlet b:current_syntax = "git" 81