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