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