Shortcut to setting PROFILE_HOME.
[profile.git] / .vim / syntax / gitv.vim
1 " Vim syntax file
2 " Language:     Custom git log output
3 " Maintainer:   Greg Sexton <gregsexton@gmail.com>
4 " Last Change:  2011-04-08
5 "
6
7 if exists("b:current_syntax")
8     finish
9 endif
10
11 "set conceallevel=2
12 "set concealcursor=n
13
14 syn match gitvSubject /.*/ 
15
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
18
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
29
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
33
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
40
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
46
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
55
56 hi def link gitvAddedMarks        diffAdded
57 hi def link gitvRemovedMarks      diffRemoved
58 hi def link gitvSeperatorMarks    Normal
59
60 hi def link gitvGraphEdge0        Delimiter
61
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
72 else
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
82 endif
83
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
88
89 let b:current_syntax = "gitv"