xref: /vim-8.2.3635/runtime/syntax/valgrind.vim (revision 5477506a)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language: Valgrind Memory Debugger Output
3071d4279SBram Moolenaar" Maintainer: Roger Luethi <[email protected]>
4071d4279SBram Moolenaar" Program URL: http://devel-home.kde.org/~sewardj/
5*5477506aSBram Moolenaar" Last Change: 2019 Jul 24
6071d4279SBram Moolenaar"
7071d4279SBram Moolenaar" Notes: mostly based on strace.vim and xml.vim
83a991dd0SBram Moolenaar"
93a991dd0SBram Moolenaar" Contributors: Christoph Gysin <[email protected]>
10071d4279SBram Moolenaar
11071d4279SBram Moolenaar" Quit when a syntax file was already loaded
12071d4279SBram Moolenaarif exists("b:current_syntax")
13071d4279SBram Moolenaar	finish
14071d4279SBram Moolenaarendif
159a7224b5SBram Moolenaarlet s:keepcpo= &cpo
169a7224b5SBram Moolenaarset cpo&vim
17071d4279SBram Moolenaar
180122c407SBram Moolenaar" Lines can be long with demangled c++ functions.
190122c407SBram Moolenaarsetlocal synmaxcol=8000
200122c407SBram Moolenaar
21071d4279SBram Moolenaarsyn case match
22071d4279SBram Moolenaarsyn sync minlines=50
23071d4279SBram Moolenaar
24071d4279SBram Moolenaarsyn match valgrindSpecLine "^[+-]\{2}\d\+[+-]\{2}.*$"
25071d4279SBram Moolenaar
26071d4279SBram Moolenaarsyn region valgrindRegion
27071d4279SBram Moolenaar	\ start=+^==\z(\d\+\)== \w.*$+
28*5477506aSBram Moolenaar	\ skip=+^==\z1==\( \|    .*\|  \S.*\)$+
29071d4279SBram Moolenaar	\ end=+^+
30071d4279SBram Moolenaar	\ fold
31071d4279SBram Moolenaar	\ keepend
32071d4279SBram Moolenaar	\ contains=valgrindPidChunk,valgrindLine
33071d4279SBram Moolenaar
34071d4279SBram Moolenaarsyn region valgrindPidChunk
350122c407SBram Moolenaar	\ start=+^==\zs+
360122c407SBram Moolenaar	\ end=+\ze==+
37071d4279SBram Moolenaar	\ contained
38071d4279SBram Moolenaar	\ contains=valgrindPid0,valgrindPid1,valgrindPid2,valgrindPid3,valgrindPid4,valgrindPid5,valgrindPid6,valgrindPid7,valgrindPid8,valgrindPid9
39071d4279SBram Moolenaar	\ keepend
40071d4279SBram Moolenaar
41071d4279SBram Moolenaarsyn match valgrindPid0 "\d\+0=" contained
42071d4279SBram Moolenaarsyn match valgrindPid1 "\d\+1=" contained
43071d4279SBram Moolenaarsyn match valgrindPid2 "\d\+2=" contained
44071d4279SBram Moolenaarsyn match valgrindPid3 "\d\+3=" contained
45071d4279SBram Moolenaarsyn match valgrindPid4 "\d\+4=" contained
46071d4279SBram Moolenaarsyn match valgrindPid5 "\d\+5=" contained
47071d4279SBram Moolenaarsyn match valgrindPid6 "\d\+6=" contained
48071d4279SBram Moolenaarsyn match valgrindPid7 "\d\+7=" contained
49071d4279SBram Moolenaarsyn match valgrindPid8 "\d\+8=" contained
50071d4279SBram Moolenaarsyn match valgrindPid9 "\d\+9=" contained
51071d4279SBram Moolenaar
52071d4279SBram Moolenaarsyn region valgrindLine
53071d4279SBram Moolenaar	\ start=+\(^==\d\+== \)\@<=+
54071d4279SBram Moolenaar	\ end=+$+
55071d4279SBram Moolenaar	\ keepend
56071d4279SBram Moolenaar	\ contained
57071d4279SBram Moolenaar	\ contains=valgrindOptions,valgrindMsg,valgrindLoc
58071d4279SBram Moolenaar
59071d4279SBram Moolenaarsyn match valgrindOptions "[ ]\{3}-.*$" contained
60071d4279SBram Moolenaar
61071d4279SBram Moolenaarsyn match valgrindMsg "\S.*$" contained
62071d4279SBram Moolenaar	\ contains=valgrindError,valgrindNote,valgrindSummary
63071d4279SBram Moolenaarsyn match valgrindError "\(Invalid\|\d\+ errors\|.* definitely lost\).*$" contained
64071d4279SBram Moolenaarsyn match valgrindNote ".*still reachable.*" contained
65071d4279SBram Moolenaarsyn match valgrindSummary ".*SUMMARY:" contained
66071d4279SBram Moolenaar
67071d4279SBram Moolenaarsyn match valgrindLoc "\s\+\(by\|at\|Address\).*$" contained
68071d4279SBram Moolenaar	\ contains=valgrindAt,valgrindAddr,valgrindFunc,valgrindBin,valgrindSrc
69071d4279SBram Moolenaarsyn match valgrindAt "at\s\@=" contained
700122c407SBram Moolenaarsyn match valgrindAddr "\W\zs0x\x\+" contained
710122c407SBram Moolenaar
72*5477506aSBram Moolenaarsyn match valgrindFunc ": \zs\h[a-zA-Z0-9_:\[\]()<>&*+\-,=%!|^ @.]*\ze([^)]*)$" contained
730122c407SBram Moolenaarsyn match valgrindBin "(\(with\)\=in \zs\S\+)\@=" contained
740122c407SBram Moolenaarsyn match valgrindSrc "(\zs[^)]*:\d\+)\@=" contained
75071d4279SBram Moolenaar
76071d4279SBram Moolenaar" Define the default highlighting
77071d4279SBram Moolenaar
78071d4279SBram Moolenaarhi def link valgrindSpecLine	Type
79071d4279SBram Moolenaar"hi def link valgrindRegion	Special
80071d4279SBram Moolenaar
81071d4279SBram Moolenaarhi def link valgrindPid0	Special
82071d4279SBram Moolenaarhi def link valgrindPid1	Comment
83071d4279SBram Moolenaarhi def link valgrindPid2	Type
84071d4279SBram Moolenaarhi def link valgrindPid3	Constant
85071d4279SBram Moolenaarhi def link valgrindPid4	Number
86071d4279SBram Moolenaarhi def link valgrindPid5	Identifier
87071d4279SBram Moolenaarhi def link valgrindPid6	Statement
88071d4279SBram Moolenaarhi def link valgrindPid7	Error
89071d4279SBram Moolenaarhi def link valgrindPid8	LineNr
90071d4279SBram Moolenaarhi def link valgrindPid9	Normal
91071d4279SBram Moolenaar"hi def link valgrindLine	Special
92071d4279SBram Moolenaar
93071d4279SBram Moolenaarhi def link valgrindOptions	Type
94071d4279SBram Moolenaar"hi def link valgrindMsg	Special
95071d4279SBram Moolenaar"hi def link valgrindLoc	Special
96071d4279SBram Moolenaar
97071d4279SBram Moolenaarhi def link valgrindError	Special
98071d4279SBram Moolenaarhi def link valgrindNote	Comment
99071d4279SBram Moolenaarhi def link valgrindSummary	Type
100071d4279SBram Moolenaar
101071d4279SBram Moolenaarhi def link valgrindAt		Special
102071d4279SBram Moolenaarhi def link valgrindAddr	Number
103071d4279SBram Moolenaarhi def link valgrindFunc	Type
104071d4279SBram Moolenaarhi def link valgrindBin		Comment
105071d4279SBram Moolenaarhi def link valgrindSrc		Statement
106071d4279SBram Moolenaar
107071d4279SBram Moolenaarlet b:current_syntax = "valgrind"
1089a7224b5SBram Moolenaar
1099a7224b5SBram Moolenaarlet &cpo = s:keepcpo
1109a7224b5SBram Moolenaarunlet s:keepcpo
111