2 " Language: Custom git log output
3 " Maintainer: Greg Sexton <gregsexton@gmail.com>
4 " Last Change: 2011-04-08
7 if exists("b:current_syntax")
14 syn match gitvSubject /.*/
16 syn match gitvDate /\(\d\+ years\?, \)\?\d\+ \%(second\|seconds\|minute\|minutes\|hour\|hours\|day\|days\|week\|weeks\|month\|months\|year\) ago/ contained containedin=gitvSubject
17 syn match gitvHash /\[[0-9a-f]\{7}\]$/ contained containedin=gitvSubject
19 syn match gitvGraphEdge9 /\(|\|\/\|\\\|\*\)\s\?/ nextgroup=gitvRef,gitvSubject skipwhite
20 syn match gitvGraphEdge8 /\(|\|\/\|\\\|\*\)\s\?/ nextgroup=gitvGraphEdge9,gitvRef,gitvSubject skipwhite
21 syn match gitvGraphEdge7 /\(|\|\/\|\\\|\*\)\s\?/ nextgroup=gitvGraphEdge8,gitvRef,gitvSubject skipwhite
22 syn match gitvGraphEdge6 /\(|\|\/\|\\\|\*\)\s\?/ nextgroup=gitvGraphEdge7,gitvRef,gitvSubject skipwhite
23 syn match gitvGraphEdge5 /\(|\|\/\|\\\|\*\)\s\?/ nextgroup=gitvGraphEdge6,gitvRef,gitvSubject skipwhite
24 syn match gitvGraphEdge4 /\(|\|\/\|\\\|\*\)\s\?/ nextgroup=gitvGraphEdge5,gitvRef,gitvSubject skipwhite
25 syn match gitvGraphEdge3 /\(|\|\/\|\\\|\*\)\s\?/ nextgroup=gitvGraphEdge4,gitvRef,gitvSubject skipwhite
26 syn match gitvGraphEdge2 /\(|\|\/\|\\\|\*\)\s\?/ nextgroup=gitvGraphEdge3,gitvRef,gitvSubject skipwhite
27 syn match gitvGraphEdge1 /\(|\|\/\|\\\|\*\)\s\?/ nextgroup=gitvGraphEdge2,gitvRef,gitvSubject skipwhite
28 syn match gitvGraphEdge0 /^\(\(|\|\/\|\\\|\*\)\s\?\)/ nextgroup=gitvGraphEdge1,gitvRef,gitvSubject skipwhite
30 syn match gitvRef /\s*(.\{-})/ nextgroup=gitvSubject skipwhite
31 syn match gitvRefTag /t:\zs.\{-}\ze\(, \|)\)/ contained containedin=gitvRef
32 syn match gitvRefRemote /r:\zs.\{-}\ze\(, \|)\)/ contained containedin=gitvRef
34 syn match gitvLoadMore /^-- Load More --$/
35 syn match gitvWorkingCopy /^-- \[.*\] --$/ contained containedin=gitvSubject
36 syn match gitvLocalUncommit /^\* Local uncommitted changes, not checked in to index\.$/
37 syn match gitvLocalCommited /^\* Local changes checked in to index but not committed\.$/
38 syn match gitvLocalCommitedNode /\*/ contained containedin=gitvLocalCommited
39 syn match gitvLocalUncommitNode /\*/ contained containedin=gitvLocalUncommit
41 syn match gitvAddedMarks /|\s\+\d\+ \zs+*-*\ze$/ contained containedin=gitvSubject
42 syn match gitvAddedMarks /|\s\+Bin \zs\d\+ -> \d\+\ze bytes$/ contained containedin=gitvSubject
43 syn match gitvRemovedMarks /-*$/ contained containedin=gitvAddedMarks
44 syn match gitvRemovedMarks /\d\+\ze ->/ contained containedin=gitvAddedMarks
45 syn match gitvSeperatorMarks /\s\+->\s\+/ contained containedin=gitvAddedMarks
47 hi def link gitvHash Number
48 hi def link gitvRef Directory
49 hi def link gitvRefTag String
50 hi def link gitvRefRemote Statement
51 hi def link gitvDate Statement
52 hi def link gitvSubject Normal
53 hi def link gitvLoadMore Question
54 hi def link gitvWorkingCopy Question
56 hi def link gitvAddedMarks diffAdded
57 hi def link gitvRemovedMarks diffRemoved
58 hi def link gitvSeperatorMarks Normal
60 hi def link gitvGraphEdge0 Delimiter
62 if &background == "dark"
63 highlight default gitvGraphEdge1 ctermfg=magenta guifg=green1
64 highlight default gitvGraphEdge2 ctermfg=green guifg=yellow1
65 highlight default gitvGraphEdge3 ctermfg=yellow guifg=orange1
66 highlight default gitvGraphEdge4 ctermfg=cyan guifg=greenyellow
67 highlight default gitvGraphEdge5 ctermfg=red guifg=springgreen1
68 highlight default gitvGraphEdge6 ctermfg=yellow guifg=cyan1
69 highlight default gitvGraphEdge7 ctermfg=green guifg=slateblue1
70 highlight default gitvGraphEdge8 ctermfg=cyan guifg=magenta1
71 highlight default gitvGraphEdge9 ctermfg=magenta guifg=purple1
73 highlight default gitvGraphEdge1 ctermfg=darkyellow guifg=orangered3
74 highlight default gitvGraphEdge2 ctermfg=darkgreen guifg=orange2
75 highlight default gitvGraphEdge3 ctermfg=blue guifg=yellow3
76 highlight default gitvGraphEdge4 ctermfg=darkmagenta guifg=olivedrab4
77 highlight default gitvGraphEdge5 ctermfg=red guifg=green4
78 highlight default gitvGraphEdge6 ctermfg=darkyellow guifg=paleturquoise3
79 highlight default gitvGraphEdge7 ctermfg=darkgreen guifg=deepskyblue4
80 highlight default gitvGraphEdge8 ctermfg=blue guifg=darkslateblue
81 highlight default gitvGraphEdge9 ctermfg=darkmagenta guifg=darkviolet
84 highlight default gitvLocalCommitedNode ctermfg=green guifg=green
85 highlight default gitvLocalUncommitNode ctermfg=red guifg=red
86 highlight default gitvLocalCommited gui=bold
87 highlight default gitvLocalUncommit gui=bold
89 let b:current_syntax = "gitv"