xref: /vim-8.2.3635/runtime/syntax/git.vim (revision c08ee747)
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