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