1" Vim syntax file
2" Language: Valgrind Memory Debugger Output
3" Maintainer: Roger Luethi <rl@hellgate.ch>
4" Program URL: http://devel-home.kde.org/~sewardj/
5" Last Change: 2002 Apr 07
6"
7" Notes: mostly based on strace.vim and xml.vim
8
9" Quit when a syntax file was already loaded
10if exists("b:current_syntax")
11	finish
12endif
13
14syn case match
15syn sync minlines=50
16
17syn match valgrindSpecLine "^[+-]\{2}\d\+[+-]\{2}.*$"
18
19syn region valgrindRegion
20	\ start=+^==\z(\d\+\)== \w.*$+
21	\ skip=+^==\z1==\( \|    .*\)$+
22	\ end=+^+
23	\ fold
24	\ keepend
25	\ contains=valgrindPidChunk,valgrindLine
26
27syn region valgrindPidChunk
28	\ start=+\(^==\)\@<=+
29	\ end=+\(==\)\@=+
30	\ contained
31	\ contains=valgrindPid0,valgrindPid1,valgrindPid2,valgrindPid3,valgrindPid4,valgrindPid5,valgrindPid6,valgrindPid7,valgrindPid8,valgrindPid9
32	\ keepend
33
34syn match valgrindPid0 "\d\+0=" contained
35syn match valgrindPid1 "\d\+1=" contained
36syn match valgrindPid2 "\d\+2=" contained
37syn match valgrindPid3 "\d\+3=" contained
38syn match valgrindPid4 "\d\+4=" contained
39syn match valgrindPid5 "\d\+5=" contained
40syn match valgrindPid6 "\d\+6=" contained
41syn match valgrindPid7 "\d\+7=" contained
42syn match valgrindPid8 "\d\+8=" contained
43syn match valgrindPid9 "\d\+9=" contained
44
45syn region valgrindLine
46	\ start=+\(^==\d\+== \)\@<=+
47	\ end=+$+
48	\ keepend
49	\ contained
50	\ contains=valgrindOptions,valgrindMsg,valgrindLoc
51
52syn match valgrindOptions "[ ]\{3}-.*$" contained
53
54syn match valgrindMsg "\S.*$" contained
55	\ contains=valgrindError,valgrindNote,valgrindSummary
56syn match valgrindError "\(Invalid\|\d\+ errors\|.* definitely lost\).*$" contained
57syn match valgrindNote ".*still reachable.*" contained
58syn match valgrindSummary ".*SUMMARY:" contained
59
60syn match valgrindLoc "\s\+\(by\|at\|Address\).*$" contained
61	\ contains=valgrindAt,valgrindAddr,valgrindFunc,valgrindBin,valgrindSrc
62syn match valgrindAt "at\s\@=" contained
63syn match valgrindAddr "\(\W\)\@<=0x\x\+" contained
64syn match valgrindFunc "\(: \)\@<=\w\+" contained
65syn match valgrindBin "\((\(with\|\)in \)\@<=\S\+\()\)\@=" contained
66syn match valgrindSrc "\((\)\@<=.*:\d\+\()\)\@=" contained
67
68" Define the default highlighting
69
70hi def link valgrindSpecLine	Type
71"hi def link valgrindRegion	Special
72
73hi def link valgrindPid0	Special
74hi def link valgrindPid1	Comment
75hi def link valgrindPid2	Type
76hi def link valgrindPid3	Constant
77hi def link valgrindPid4	Number
78hi def link valgrindPid5	Identifier
79hi def link valgrindPid6	Statement
80hi def link valgrindPid7	Error
81hi def link valgrindPid8	LineNr
82hi def link valgrindPid9	Normal
83"hi def link valgrindLine	Special
84
85hi def link valgrindOptions	Type
86"hi def link valgrindMsg	Special
87"hi def link valgrindLoc	Special
88
89hi def link valgrindError	Special
90hi def link valgrindNote	Comment
91hi def link valgrindSummary	Type
92
93hi def link valgrindAt		Special
94hi def link valgrindAddr	Number
95hi def link valgrindFunc	Type
96hi def link valgrindBin		Comment
97hi def link valgrindSrc		Statement
98
99let b:current_syntax = "valgrind"
100