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