blob: 48e9564acbd985d9cc6f9540ac41bd1d0922ffa4 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" 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/
Bram Moolenaar9a7224b2012-04-30 15:56:52 +02005" Last Change: 2012 Apr 30
Bram Moolenaar071d4272004-06-13 20:20:40 +00006"
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
Bram Moolenaar9a7224b2012-04-30 15:56:52 +020013let s:keepcpo= &cpo
14set cpo&vim
Bram Moolenaar071d4272004-06-13 20:20:40 +000015
16syn case match
17syn sync minlines=50
18
19syn match valgrindSpecLine "^[+-]\{2}\d\+[+-]\{2}.*$"
20
21syn region valgrindRegion
22 \ start=+^==\z(\d\+\)== \w.*$+
23 \ skip=+^==\z1==\( \| .*\)$+
24 \ end=+^+
25 \ fold
26 \ keepend
27 \ contains=valgrindPidChunk,valgrindLine
28
29syn region valgrindPidChunk
30 \ start=+\(^==\)\@<=+
31 \ end=+\(==\)\@=+
32 \ contained
33 \ contains=valgrindPid0,valgrindPid1,valgrindPid2,valgrindPid3,valgrindPid4,valgrindPid5,valgrindPid6,valgrindPid7,valgrindPid8,valgrindPid9
34 \ keepend
35
36syn match valgrindPid0 "\d\+0=" contained
37syn match valgrindPid1 "\d\+1=" contained
38syn match valgrindPid2 "\d\+2=" contained
39syn match valgrindPid3 "\d\+3=" contained
40syn match valgrindPid4 "\d\+4=" contained
41syn match valgrindPid5 "\d\+5=" contained
42syn match valgrindPid6 "\d\+6=" contained
43syn match valgrindPid7 "\d\+7=" contained
44syn match valgrindPid8 "\d\+8=" contained
45syn match valgrindPid9 "\d\+9=" contained
46
47syn region valgrindLine
48 \ start=+\(^==\d\+== \)\@<=+
49 \ end=+$+
50 \ keepend
51 \ contained
52 \ contains=valgrindOptions,valgrindMsg,valgrindLoc
53
54syn match valgrindOptions "[ ]\{3}-.*$" contained
55
56syn match valgrindMsg "\S.*$" contained
57 \ contains=valgrindError,valgrindNote,valgrindSummary
58syn match valgrindError "\(Invalid\|\d\+ errors\|.* definitely lost\).*$" contained
59syn match valgrindNote ".*still reachable.*" contained
60syn match valgrindSummary ".*SUMMARY:" contained
61
62syn match valgrindLoc "\s\+\(by\|at\|Address\).*$" contained
63 \ contains=valgrindAt,valgrindAddr,valgrindFunc,valgrindBin,valgrindSrc
64syn match valgrindAt "at\s\@=" contained
65syn match valgrindAddr "\(\W\)\@<=0x\x\+" contained
66syn match valgrindFunc "\(: \)\@<=\w\+" contained
67syn match valgrindBin "\((\(with\|\)in \)\@<=\S\+\()\)\@=" contained
68syn match valgrindSrc "\((\)\@<=.*:\d\+\()\)\@=" contained
69
70" Define the default highlighting
71
72hi def link valgrindSpecLine Type
73"hi def link valgrindRegion Special
74
75hi def link valgrindPid0 Special
76hi def link valgrindPid1 Comment
77hi def link valgrindPid2 Type
78hi def link valgrindPid3 Constant
79hi def link valgrindPid4 Number
80hi def link valgrindPid5 Identifier
81hi def link valgrindPid6 Statement
82hi def link valgrindPid7 Error
83hi def link valgrindPid8 LineNr
84hi def link valgrindPid9 Normal
85"hi def link valgrindLine Special
86
87hi def link valgrindOptions Type
88"hi def link valgrindMsg Special
89"hi def link valgrindLoc Special
90
91hi def link valgrindError Special
92hi def link valgrindNote Comment
93hi def link valgrindSummary Type
94
95hi def link valgrindAt Special
96hi def link valgrindAddr Number
97hi def link valgrindFunc Type
98hi def link valgrindBin Comment
99hi def link valgrindSrc Statement
100
101let b:current_syntax = "valgrind"
Bram Moolenaar9a7224b2012-04-30 15:56:52 +0200102
103let &cpo = s:keepcpo
104unlet s:keepcpo